如何在nette数据库中做一个简单的JOIN
How to do a simple JOIN in nette database
我怎样才能在 nette 数据库中进行非常简单的连接,从而产生这样的查询?
SELECT * FROM Book LEFT OUTER JOIN Author ON Book.author_id = Author.id
我找到了无数关于如何结合 where 子句、order by、group by 等进行连接的教程,但没有关于像这样的简单连接的单个教程。
我忘记说明了,我用的是PHP,所以我需要$context->table('Book')->join('author');
之类的东西,但这当然不行。
在这种情况下您不需要加入,Nette 为您提供 table 之间的关系,因此您可以这样做:
foreach($connection->table('book') as $book){
echo 'Book name: '.$book->name.'<br>'
echo 'Book autor: '.$book->author->name.'<br>'
}
我希望在书 table 中有列 author_id 是作者 table 的外键。
问题已经回答了,所以我只加一个备注。
您不能使用 Nette 数据库进行连接,没有连接功能。例如,您可以通过按顺序引用另一个 table 列来强制加入,但它非常有限。如果你需要更复杂的连接,你最好使用 Dibi 而不是 Nette 数据库。
我怎样才能在 nette 数据库中进行非常简单的连接,从而产生这样的查询?
SELECT * FROM Book LEFT OUTER JOIN Author ON Book.author_id = Author.id
我找到了无数关于如何结合 where 子句、order by、group by 等进行连接的教程,但没有关于像这样的简单连接的单个教程。
我忘记说明了,我用的是PHP,所以我需要$context->table('Book')->join('author');
之类的东西,但这当然不行。
在这种情况下您不需要加入,Nette 为您提供 table 之间的关系,因此您可以这样做:
foreach($connection->table('book') as $book){
echo 'Book name: '.$book->name.'<br>'
echo 'Book autor: '.$book->author->name.'<br>'
}
我希望在书 table 中有列 author_id 是作者 table 的外键。
问题已经回答了,所以我只加一个备注。
您不能使用 Nette 数据库进行连接,没有连接功能。例如,您可以通过按顺序引用另一个 table 列来强制加入,但它非常有限。如果你需要更复杂的连接,你最好使用 Dibi 而不是 Nette 数据库。