Doctrine OneToMany/ManyToOne引用的对象始终为null


Doctrine OneToMany / ManyToOne referenced object always null

我正在构建Symfony 2应用程序,因此使用ORM原则。所以一切都很顺利,除了一个引用永远都是空的,我不知道为什么。这就是我所拥有的:

集团实体:

class Group {
    ...
    /**
    * 
    * @ORM'ManyToOne(targetEntity="Test")
    * @ORM'JoinColumn(name="test", referencedColumnName="id")
    *
    */
    private $test;
    /**
    * 
    * @ORM'OneToMany(targetEntity="Participant", mappedBy="group")
    * 
    */
    private $participants;
}

参与者实体:

class Participant {
    ...
    /**
     * 
     * @ORM'ManyToOne(targetEntity="Group", inversedBy="participants")
     * @ORM'JoinColumn(name="`group`", referencedColumnName="id", onDelete="CASCADE")
     * 
    */
    private $group;
}

所以我有以下关系:

测试(1)<->(N) 组(1)<->(N) 参与者

问题:

  1. 当对参与者实体的对象调用getGroup()时,我得到的返回值为null
  2. 当对组实体的对象调用getTest()时,我得到了正确的测试对象
  3. 当对group对象调用getParticipants时,我会得到所有参与者的集合

那么为什么是1。不工作和2。即使两者都是同一种关系?

调试时更奇怪的是:

Debug::dump($participant); 

导致:

object(stdClass)[406] public '__CLASS__' => string 'GroupBundle'Entity'Participant' (length=52) 
public 'id' => int 1 
public 'firstname' => string 'xxx' (length=4) 
public 'lastname' => string 'xxx' (length=7) 
public 'email' => string 'xxx' (length=19) 
public 'auth_token' => string 'xxx' (length=43) 
public 'group' => null

但是

Debug::dump($group);
Debug::dump($participant);

导致:

object(stdClass)[406] public '__CLASS__' => string 'GroupBundle'Entity'Participant' (length=52) 
public 'id' => int 1 
public 'firstname' => string 'xxx' (length=4) 
public 'lastname' => string 'xxx' (length=7) 
public 'email' => string 'xxx' (length=19) 
public 'auth_token' => string 'xxx' (length=43) 
public 'group' => object(stdClass)[412] public '__CLASS__' => string 'GroupBundle'Entity'Group' (length=46) 
public 'id' => int 1 
public 'name' => string 'xxx' (length=4) 
public 'description' => string 'xxx' (length=4) 
public 'status' => int 0 
public 'test' => string 'Proxies'__CG__'TestBundle'Entity'Test' (length=59) 
public 'participants' => string 'Array(5)' (length=8)

所以突然间它就在那里。谢谢你的想法。希望你能帮助我。

在中使用回溯报价

@ORM'JoinColumn(name="`group`", referencedColumnName="id", onDelete="CASCADE")
                      ^     ^

联接列不支持。我假设您使用的DBMS将GROUP作为保留字,这就是您使用backticks的原因。尝试按如下方式更改联接列:

@ORM'JoinColumn(name="group_id", referencedColumnName="id", onDelete="CASCADE")