Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Конструктор SQL запросов


Автор: DimaSiK 6.10.2014, 20:27
Проект крутиться под ZF1.10. Проект достался вот с такой вот красотой:

Код

 $select = $this->select()->from('app_folder_tag_relation', array(
            'app_folder.id',
            'app_folder.name',
            'app_folder.nicename',
            'app_folder.responsible',

            'app_folder_tag.id as tag_id',
            'app_folder_tag.name as tag_name',

            'app_folder_tag_relation.id as relation_id',
            'app_folder_tag_relation.dateAdded as relation_date',
            'app_folder_tag_relation.story as relation_story_id',
            'app_folder_tag_relation.active as relation_status'

        ))->order('app_folder_tag_relation.dateAdded DESC')->setIntegrityCheck(false);

        $select->joinLeft($this->_name, 'app_folder.id = app_folder_tag_relation.folder', array());
        $select->joinLeft('app_folder_tag', 'app_folder_tag.id = app_folder_tag_relation.tag', array());

        if(isset($options['account'])) {
            $select->where('app_folder_tag_relation.account = ?', $options['account']);
        } else {
            $select->where('app_folder_tag_relation.account = ?', Digest_Users::current('account'));
        }

        if(isset($options['folder'])) {
            $select->where('app_folder.id = ?', $options['folder']);
        }

        if(isset($options['orgno'])) {
            $select->where('app_folder.orgno = ?', $options['orgno']);
        }

        $select->where('app_folder_tag_relation.story != ?', '');
        $select->where('app_folder.name IS NOT NULL');

        if(isset($options['tags'])) {
            $select->where('app_folder_tag_relation.tag IN (' . (is_array($options['tags']) && count($options['tags']) ? implode(',', $options['tags']) : -1) . ')');
        }

        if(isset($options['companies'])) {
            $select->where('app_folder.id IN (' . (is_array($options['companies']) && count($options['companies']) ? implode(',', $options['companies']) : -1) . ')');
        }


Вопрос состоит в том, есть ли готовые средства для автоматического маппинга входящих данных, чтобы убрать ну или как-то автоматизировать все эту простыню кода?

Автор: Aliance 27.10.2014, 14:00
А что собственно не устраивает в текущей реализации? Конечно немного старовато, по сравнению с тем же ZF2, но в целом не сырой запрос же.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)