#php #zend-framework #join #zend-db-table
#php #zend-framework #Присоединиться #zend-db-table
Вопрос:
у меня есть эти две таблицы ,
s (идентификатор, имя, фамилия, mydate, mount, sh)
пользователи (uid, email, пароль, nameoffice)
и этот запрос
$sql=»ВЫБРАТЬ s.id, s.firstname,s.lastname, s.mydate, s.mount,users.nameOffice От sayer ОСТАВИЛ ПРИСОЕДИНИТЬСЯ к пользователям НА s.sh=users.sh порядок по дате (s.mydate) DESC,s.mount DESC»;
как я мог бы написать этот запрос в zend framework?
Ответ №1:
Один из способов заключается в следующем:
$db = Zend_Db_Table::getDefaultAdapter();
$select = $db->select();
$select->from(array('s' => 'sayer'), array('id', 'firstname', 'lastname', 'mydate', 'mount'))
->joinLeft(array('u' => 'users'), 's.sh = u.sh', array('nameOffice'))
->order(array('date(s.mydate) DESC', 's.mount DESC'));
print($select->assemble());
Это приводит к:
SELECT `s`.`id`, `s`.`firstname`, `s`.`lastname`, `s`.`mydate`, `s`.`mount`,
`u`.`nameOffice` FROM `sayer` AS `s` LEFT JOIN `users` AS `u` ON s.sh = u.sh
ORDER BY date(s.mydate) DESC, `s`.`mount` DESC
Для получения дополнительной информации взгляните на Zend_Db_Select.
Комментарии:
1. это работает только тогда, когда я помещаю и пустой массив вместо array (‘nameoffice’), в чем проблема, когда я использую array (‘nameoffice’)
2. @ulduz114. Я не знаю. Собранный sql такой же, как в вашем вопросе. Вы получаете какие-либо ошибки или что-то в этомроде?
3. @ulduz114 Вы написали неправильный запрос. Смотрите nameOffice в таблице. Возможно, @Marcin взял из вашего запроса. Вы предоставили неверную информацию, тогда как получается, что вы получаете желаемый результат? В любом случае, надеюсь, вы поняли логику, как работать над сценарием 🙂