Запрос SQL с Zend Framework 2 tableGateway
Я новичок в Zend Framework 2, и сейчас я пишу форум для школьного проекта. У меня есть запрос, которым я не могу управлять с помощью объекта Db Sql Select и tableGateway. Я только что использовал адаптер Db, и он отлично работает, но я ищу способ передать свой запрос с помощью объекта Db Sql Select, потому что позже мне потребуется использовать paginator.
Вот что у меня есть:
public function fetchAll()
{
$select = $this->adapter->query(
'SELECT theme.nom AS nom, theme.idTheme AS idTheme, theme.TidAdmin AS TidAdmin, theme.description AS description, users.username, Dnom, date, admin.pseudo AS apseudo
FROM theme
LEFT join (select DidUsers, Dnom, DidTheme, date from discussion group by date ) D ON `DidTheme` = theme.`idTheme`
LEFT JOIN users on DidUsers = idUsers
LEFT JOIN admin on TidAdmin = idAdmin'
);
$statement = $select;
$results = $statement->execute();
return iterator_to_array($results);
}
Любые идеи о том, как я могу выполнить этот запрос с Zend\Db\Sql\Select? Спасибо!
1 ответ
Решение
$subquery = new \Zend\Db\Sql\Select ('discussion');
$subquery->group ("date");
$subquery->columns (["DidUsers" , "Dnom", "DidTheme", "date"]);
$query = new \Zend\Db\Sql\Select ('theme');
$query->columns (['nom', 'idTheme', 'TidAdmin', 'description']);
$query->join ($subquery, 'idTheme = DidTheme');
$query->join ('users', 'idUsers = DidUsers', ['username']);
$query->join ('admin', 'idUsers = TidUsers', ['pseudo' => 'apseudo']);