我在php项目中使用条令ORM
我想知道条令是如何从数据库中获取对象(其表)的?
-
它是否获取该对象的所有相关联接以及所有相关对象
假设$author与$文章有关联。$author = $authorRepository->find($id)
是否获取文章表? -
它是否获取该对象的联接的联接?
我在转储ORM对象时遇到了这个问题。我看到了它所有的协会名称。例如:$author:的条令转储
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"
}
}
我想知道条令是如何从数据库中获取对象(其表)的?
基本上使用数据映射器模式。
它是否获取该对象的所有相关联接,从而获取所有相关联接对象?它是否获取该对象的联接?
不,不是除非您使用DQL、查询生成器或本机SQL指定它。
如果您在其存储库中获得一个对象,请说:$author = $authorRepository->find($id)
;它将只从一个表中提取(类表继承除外)
如果随后要求$author
对象检索其关系,例如:$author->getBooks();
,而之前没有指定它(与DQL/SQL连接),则它将使用延迟加载,通过虚拟代理模式实现,并执行另一个分离的查询来检索数据。