0

我在我的 php 项目中使用教义 ORM 。
我想知道教义如何从数据库中获取对象(其表)?

  • 它是否获取该对象的所有相关连接以及所有相关对象?
    假设$author与$article有关联。是否$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"
    }
}
4

1 回答 1

3

我想知道教义如何从数据库中获取对象(其表)?

基本上使用数据映射器模式

它是否获取该对象的所有相关连接以及所有相关对象?它是否获取该对象的连接的连接?

不,它没有。除非您使用DQL查询生成器本机 SQL指定它。

如果您在其存储库中获得一个对象,请说$author = $authorRepository->find($id):它将仅从一个表中获取(类表继承除外)

如果您随后要求$author对象检索其关系,例如:$author->getBooks();没有事先指定它(使用 DQL/SQL 连接),那么它将使用延迟加载,由虚拟代理模式实现,并将执行另一个单独的查询来检索数据

于 2012-08-29T01:57:53.663 回答