Php 原则:为什么$entity->;许多关系->;getId()是否触发对数据库的查询?

Php 原则:为什么$entity->;许多关系->;getId()是否触发对数据库的查询?,php,mysql,symfony,doctrine-orm,doctrine,Php,Mysql,Symfony,Doctrine Orm,Doctrine,我有一个带有referer字段的用户类: class User { /** * @ORM\ManyToOne(targetEntity="User", cascade={"detach"}) * @ORM\JoinColumn(name="referrer", referencedColumnName="id") */ protected $referrer = null; public function getReferer(){

我有一个带有referer字段的用户类:

class User {
    /**
     * @ORM\ManyToOne(targetEntity="User", cascade={"detach"})
     * @ORM\JoinColumn(name="referrer", referencedColumnName="id")
     */
    protected $referrer = null;

    public function getReferer(){
        return $this->referrer;
    }
}
我读到的是,自从第2.2条规则以来,当我调用
$user->getReferer()->getId()
时,我应该在不触发额外查询的情况下获得引用的id

但在我的例子中,原则是从数据库中获取整个实体。 我做错了什么

我使用symfony 2.7.1并运行echo
\doctor\ORM\Version::Version
检查doctor的版本

$user->getReferer()
尚未触发任何其他查询。)

编辑

我如何测试它:

$user = $this->getUser();
$referrer = $user->getReferrer();
//Until there one query is executed by security(?) to fetch authenticated user.
//Referrer is not yet initialized.

$this->addFlash('info', 'Referrer id: '.$referrer->getId());
//Now second query was fired. And $refferer is now initialized.

return array('data' => $referrer); //return $refferer object for twig dump.
Twig为不带
getId()
的代码转储类似的内容:

这适用于在
$referer
上使用
getId()
的代码:

User {#1184 ▼
    +__isInitialized__: true
    #id: 2      
    #referrer: null
}

你在哪里读到这样的东西?因为这是不对的。@Cerad,首先我发现这里没有提到任何版本,然后我发现这里提到了2.2版本的条令没有公平链接到我自己的帖子。代码中必须有其他内容正在访问仲裁对象。也许它正在被序列化?@Cerad我用测试代码更新了我的帖子。你在哪里读到这样的东西?因为这是不对的。@Cerad,首先我发现这里没有提到任何版本,然后我发现这里提到了2.2版本的条令没有公平链接到我自己的帖子。代码中必须有其他内容正在访问仲裁对象。也许它正在被序列化?@Cerad我用测试代码更新了我的帖子。
User {#1184 ▼
    +__isInitialized__: true
    #id: 2      
    #referrer: null
}