簡體   English   中英

原則一對多返回null

[英]Doctrine one-to-many returning null

我正在嘗試將里程碑映射到項目,但是當我嘗試引用該關系時,它總是返回null。

數據庫看起來很完美,targetEntity路徑正確,並且該方案通過使用進行驗證

doctrine:scheme:validate

project.php

/**
 * @ORM\OneToMany(targetEntity="Planning\Readmodel\Project\Milestone\Milestone", mappedBy="project", cascade={"persist", "remove"})
 */
private $milestones;

milestone.php

/**
 * @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;

根據官方文檔5.11。 映射默認值

聯接表的名稱默認為參與類的簡單,無限定的類名的組合,並用下划線字符分隔。 連接列的名稱默認為目標類的簡單,無限制的類名,后跟“ _id”。 就像一對一或多對一映射一樣,referencedColumnName始終默認為“ id”。

確保通過運行doctrine update命令來更新數據庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM