我有Shops
表,可以有Products
。其他商店可以使用相同的商品,因此我使用了belongsToMany
关系表ShopsProducts
。
我可以向商店添加无限数量的商品,并通过保存Shop实体(包括关系)来删除它们。 一切正常,但如果我想从我的表格中取消所有商品的链接并保存,则该关系是空的,因此商店将始终有1个产品,我无法删除关系,但只能直接删除。
这是带有产品的商店表单中的请求。
data => [
'name' => 'some',
'is_active' => '1',
'slug' => 'some',
'product_id' => '',
'products' => [
(int) 5 => [
'id' => '5',
'_joinData' => [
'priority' => '0'
]
]
],
]
这是没有
的请求data => [
'name' => 'some',
'is_active' => '1',
'slug' => 'some',
'product_id' => '',
]
处理此问题的方法是什么?
答案 0 :(得分:1)
你的保存策略是什么?
https://book.cakephp.org/3.0/en/orm/saving-data.html#saving-belongstomany-associations
尝试使用replace
代替append
。
如果这对您不起作用,请检查before()或afterSave(),如果products-> get('products')为空,如果它在连接表上手动调用deleteAll()那个产品是一个商店。
答案 1 :(得分:0)
您需要将关联设置为[]才能将其清除。
$shops->products = [];
$shops->setDirty('products ', true);