2015-09-23 122 views
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; 

當我看到一個例子,我可以看到該工具,但是當我查看工具我可以看到一個實例的數組。我總是得到一個空值。

我錯過了什麼?

回答

0

您確定您的@JoinColumn註釋是正確的嗎?

在註解,我看到referencedColumnName="tool_id",但對你的工具的實體,我看到了(當然假設這些實體都在同一個命名空間)private $toolId;

其他的一切看起來正確的我,根據the docs

+0

我相信referencedColumnName必須與表列名稱匹配,即tool_id。 private $ toolId是實體名稱。我需要把我自己的邏輯放在函數getInstances中嗎?我認爲教義應該自動獲得相關項目。 –

+0

這不應該是必要的,你認爲教義應該填補你的空白。一個簡單的方法來檢查你的'@ JoinColumn'註解不是導致問題的一個方法,那就是確保你的Tool實體有一個私鑰(如果你還沒有一個,就添加一個'@ Id'註釋),並刪除你的@ JoinColumn'註釋 - Doctrine應該根據你的'@ ManyToOne'註釋猜測一些合理的默認值。 (另見:http://doctrine-orm.readthedocs.org/en/latest/reference/annotations-reference.html#annref-joincolumn) –