[英]Doctrine one-to-many returning null
我正在嘗試將里程碑映射到項目,但是當我嘗試引用該關系時,它總是返回null。
數據庫看起來很完美,targetEntity路徑正確,並且該方案通過使用進行驗證
doctrine:scheme:validate
/**
* @ORM\OneToMany(targetEntity="Planning\Readmodel\Project\Milestone\Milestone", mappedBy="project", cascade={"persist", "remove"})
*/
private $milestones;
/**
* @ORM\ManyToOne(targetEntity="Planning\Readmodel\Project\Project", inversedBy="milestones", cascade={"persist", "remove"})
* @ORM\JoinColumn(name="projectId", referencedColumnName="projectId")
*/
private $project;
但是,當我嘗試獲取里程碑時,我使用以下方法得到null:
$this->milestones;
知道我做錯了什么嗎? 謝謝。
您擁有的實體定義(即Project
對我而言很好,但您的倒置實體(即Milestone
)的JoinColumn
注解中存在問題JoinColumn
注解name
與當前實體的列相關, JoinColumn
與項目實體保持關系,但在referencedColumnName
您必須提供該列作為項目實體主鍵的父實體的名稱,應referencedColumnName="id"
因此,您對里程碑實體的注釋應類似於
/**
* @ORM\ManyToOne(targetEntity="Planning\Readmodel\Project\Project", inversedBy="milestones", cascade={"persist", "remove"})
* @ORM\JoinColumn(name="project_id", referencedColumnName="id")
*/
private $project;
聯接表的名稱默認為參與類的簡單,無限定的類名的組合,並用下划線字符分隔。 連接列的名稱默認為目標類的簡單,無限制的類名,后跟“ _id”。 就像一對一或多對一映射一樣,referencedColumnName始終默認為“ id”。
確保通過運行doctrine update命令來更新數據庫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.