我在我的php项目中使用 doctrine ORM 我想知道doctrine是如何从数据库中获取对象(它的表)的?
是否会获取该对象的所有相关连接以及所有相关对象?
说 $ author 与 $ article 有关联。 $author = $authorRepository->find($id)
获取文章表吗?
是否会获取该对象的联接?
当我转储ORM对象时,我遇到了这个问题。我看到了它的所有协会头衔。例如:$ author的doctrine dump:
object(stdClass)#1212 (4) {
["__CLASS__"]=>
string(6) "author"
["ID"]=>
int(12)
["num"]=>
int(6059996)
["CreateTimestamp"]=>
int(1316602238)
["articles"]=>
array(3) {
[0]=>
string(7) "article"
[1]=>
string(7) "article"
[2]=>
string(7) "article"
}
}
答案 0 :(得分:3)
我想知道doctrine如何从数据库中获取对象(它的表)?
基本上使用Data Mapper Pattern。
它是否获取该对象的所有相关联接,因此所有相关 对象?它是否获取该对象的连接的连接?
不,它没有。除非您使用DQL,query builder或native SQL指定。
如果您在其存储库中获得一个对象,请说:$author = $authorRepository->find($id)
;它将仅从一个表中获取(class table inheritance除外)
如果你然后要求$author
对象检索它的关系,请说:$author->getBooks();
没有事先指定它(加入DQL / SQL)然后它将使用lazy loading,由虚拟代理模式,并将执行另一个分隔查询以检索数据。