我有一个设置,我有产品Feed,每个Feed都有很多产品。非常简化的设置看起来像这样:
Feed模型:
/**
* 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被删除。我怀疑它与如何设置关系有关,但我似乎无法弄清楚它在哪里出错。
任何人都可以对这种情况有更多的了解吗?
答案 0 :(得分:1)
Feed模型:
/**
* 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;
/**
* @var Feed
* @OneToMany(targetEntity="App\Model\Product", mappedBy="feed", orphanRemoval=true, cascade={"remove"})
*
*/
protected $products;
}
产品型号:
/**
* 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", inversedBy="products")
* @JoinColumn(name="id_feed", referencedColumnName="id")
*/
protected $feed;
}
现在,如果删除Feed对象,则也会删除链接到此Feed的Product对象。
这是双向关系。
更多信息:
<强>级联= {&#34;除去&#34;} 强>
<强> orphanRemoval =&#34;真&#34; 强>