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) –