1
当我尝试检索我的双向关系的多方时,我总是收到null
结果。OneToMany与Symfony2和Doctrine的关系
我的工具实体,我有
public function __construct()
{
$this->instances = new ArrayCollection;
}
/**
* @var integer
*/
private $toolId;
/* @var ArrayCollection things
*
* @ORM\OneToMany(targetEntity="Instance", mappedBy="tool")
*/
private $instances;
public function getInstances(){
print "In the get";
var_dump($this->instances);
return $this->instances;
}
然后在另一边,我有
class Instance {
/**
* @var integer
*/
private $instanceId;
/**
* @var string
*/
private $serialnumber;
/**
* @var boolean
*/
private $inServiceFlag = '1';
/**
* @ORM\ManyToOne(targetEntity="Tool", inversedBy="instances")
* @ORM\JoinColumn(name="tool_id", referencedColumnName="tool_id")
*/
private $tool;
当我看到一个例子,我可以看到该工具,但是当我查看工具我可以看到一个实例的数组。我总是得到一个空值。
我错过了什么?
我相信referencedColumnName必须与表列名称匹配,即tool_id。 private $ toolId是实体名称。我需要把我自己的逻辑放在函数getInstances中吗?我认为教义应该自动获得相关项目。 –
这不应该是必要的,你认为教义应该填补你的空白。一个简单的方法来检查你的'@ JoinColumn'注解不是导致问题的一个方法,那就是确保你的Tool实体有一个私钥(如果你还没有一个,就添加一个'@ Id'注释),并删除你的@ JoinColumn'注释 - Doctrine应该根据你的'@ ManyToOne'注释猜测一些合理的默认值。 (另见:http://doctrine-orm.readthedocs.org/en/latest/reference/annotations-reference.html#annref-joincolumn) –