Как использовать Join в Zend Framework?

#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 взял из вашего запроса. Вы предоставили неверную информацию, тогда как получается, что вы получаете желаемый результат? В любом случае, надеюсь, вы поняли логику, как работать над сценарием 🙂