我會特定的。 我有實體任務,城市和組織者。 當我嘗試刪除組織者,具有與追求錯誤的關係出現關於symfony中的實體關係的諮詢(學說)
發生異常而執行「DELETE FROM WHERE主辦ID =?使用參數[522]:
SQLSTATE [23000]:完整性約束違規:1451不能刪除或 更新父行:外鍵約束失敗(
test
Quest
, 約束FK_82D6D713876C4DDA
外鍵(organizer_id
) 參考Organizer
(id
))
我對配置關係的正確方式完全混淆。 邏輯是:
- 我們添加新城市。
- 我們添加新的組織者,並把城市放入組織者。
- 我們創造新的追求,並將城市和組織者放入其中。
- 如果我們刪除管理器 - 任務中的組織者ID必須是 刪除(任務不得刪除)。
- 如果我們刪除了組織者 - 而且城市中的組織者ID也必須刪除 (城市也不能刪除)。
我很抱歉我非常愚蠢的描述,但我試圖排除誤解。
那麼,我應該爲我的情況使用什麼樣的正確的實體關係?
class Quest {
...
/**
* @ORM\JoinColumn(name="organizer_id", referencedColumnName="id")
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Organizer")
*/
protected $organizer;
}
class Organizer {
...
/**
* @ORM\Column(type="string", length=140)
*/
protected $name;
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\City", inversedBy="organizers")
* @ORM\JoinTable(name="organizers_cities")
*/
protected $cities;
public function __construct() {
$this->quests = new ArrayCollection(); // i don't remember why this is here
}
}
class City {
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Organizer", mappedBy="cities")
*/
protected $organizers;
/**
* Constructor
*/
public function __construct() {
$this->quests = new \Doctrine\Common\Collections\ArrayCollection();
$this->organizers = new \Doctrine\Common\Collections\ArrayCollection();
}
}
他不想在級聯中刪除Quest,只是將關係設爲null,你確定這是你的代碼在做什麼? – abdiel
哦,好吧,不明白。我重寫了答案。謝謝。 – Alsatian