Посмотрите на этот код:Zend Framework вопрос запрос
$sql = $this->getAdapter()->select()
->from(array('mab' => 'module_adv_banner'))
->joinLeft(array('mafb' => 'module_adv_filebanner'),'mab.id = mafb.id_banner',array('source','type'))
->joinLeft(array('macb' => 'module_adv_contentbanner'),'mab.id = macb.id_banner',array('content','type'))
->where('mab.id = ?', $this->_id)
->order('position asc');
В этом запросе я использую 3 таблицы. Сначала с 'mab'
псевдоним - это основная таблица баннеров. Две другие таблицы: 'mafb'
и 'macb'
- это специальные таблицы для разных типов баннеров. В случае, если баннер является изображением или swf, он хранится в таблице «mafb», в случае баннер-информера, я использую другую таблицу - 'macb'
В этом запросе я выбираю все необходимые элементы баннера. Только одна из двух конкретных таблиц имеет строку с id_banner = mab.id = $this->_id,
, и каждая из этих таблиц имеет поле «тип». Если он найдет эту строку в первой таблице, значение «type» будет равно null, потому что оно будет перезаписано вторым значением типа таблицы. Как я могу решить эту проблему?
С наилучшими пожеланиями, Ахмед.
p.s. Извините, если мое объяснение затруднено, у меня нет хорошего знания английского.
$ это -> _ идентификатор не является значением (так что вы не можете -> где ('mab.id =?', $ Это -> _ ID)), это ? –
Нет, он имеет значение, которое присваивается $ this -> _ id в __construct() – Ahmed