1
我有一个设置,我有产品供稿,每个供稿有许多产品。非常简单的设置是这样的:学说2:ManyToOne级联删除导致删除参考实体
饲料模型:
/**
* Class Feed represents a single feed as supplier by a supplier
* @package App\Model
* @Entity @Table(name="feeds")
*/
class Feed
{
/**
* @var int
* @Id @Column(type="integer") @GeneratedValue
*/
protected $id;
}
产品型号:
/**
* Class Product is the base for either supplied and current products
* @package App\Model
*/
class Product
{
/**
* @var int
* @Id @Column(type="integer") @GeneratedValue
*/
protected $id;
/**
* @var Feed
* @ManyToOne(targetEntity="App\Model\Feed", cascade={"remove"})
* @JoinColumn(name="id_feed", referencedColumnName="id", onDelete="CASCADE")
*/
protected $feed;
}
现在你可以看到我已经级联启用,因为我希望所有的产品在Feed被删除时自动删除。
但是......此刻,当我删除产品时,它也会导致原始Feed te被删除。我怀疑它与这个关系是如何建立关系的,但我似乎无法弄清楚它出错的地方。
任何人都可以在这种情况下看到更多的光线吗?
我想你应该定义该级联饲料类拥有的ORM忽略将“OneToMany”映射到您的产品。实际上,你已经定义了单向关系。你必须定义双向关系 – Delphine
感谢您的解释!一种新的教义。我正在考虑CASCADE如何在MySQL中工作,你只需要在孤儿中定义它,所以我认为它在Doctrine中有类似的方法。 –
Orm对我来说也是一个难题!但是,一旦设定好就像魔术一样。你可以在这篇文章中获得更多精确的细节:http://stackoverflow.com/questions/25515007/doctrine-cascade-remove-vs-orphanremoval-true?rq=1。 – Delphine