php orm doctrine如何获取对象及其相关联接

时间:2012-08-28 23:35:41

标签: php mysql orm doctrine-orm

我在我的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"
    }
}

1 个答案:

答案 0 :(得分:3)

  

我想知道doctrine如何从数据库中获取对象(它的表)?

基本上使用Data Mapper Pattern

  

它是否获取该对象的所有相关联接,因此所有相关   对象?它是否获取该对象的连接的连接?

不,它没有。除非您使用DQLquery buildernative SQL指定。

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

如果你然后要求$author对象检索它的关系,请说:$author->getBooks();没有事先指定它(加入DQL / SQL)然后它将使用lazy loading,由虚拟代理模式,并将执行另一个分隔查询以检索数据