我会特定的。 我有实体任务,城市和组织者。 当我尝试删除组织者,具有与追求错误的关系出现关于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