我的两个表(客户端和产品)使用Laravel的blongToMany和一个数据透视表具有ManyToMany关系.现在我想检查某个客户是否有某种产品.
我可以创建一个模型来检查数据透视表,但由于Laravel不需要这个模型用于belongsToMany方法,我想知道是否有另一种方法来检查某个关系是否存在而没有数据透视表的模型.
我使用 Laravel 5.3
我有 3 个表:表产品、表类别和表 products_categories
表产品:id、名称等
表类别:id、名称等
表 products_categories : id, product_id, category_id
在模型产品中,我有这样的方法:
public function categories()
{
return $this->belongsToMany(Category::class, 'products_categories', 'product_id', 'category_id')
->withPivot('id')
->withTimestamps();
}
Run Code Online (Sandbox Code Playgroud)
所以1个产品有很多类别
我的代码是这样的
例如 $param['category'] 像这样:
数组 ( ['category1'] => 4 ['category2'] => 11 ['category3'] => 18)
$product_id = 1
foreach ($param['category'] as $category) {
Product::find($product_id)
->categories()
->attach(
$category,
[]
);
}
Run Code Online (Sandbox Code Playgroud)
它用于在数据透视表上添加类别并且它有效
但是如果我更新数据透视表上的类别,它就不起作用
我尝试这样:
例如之前这样编辑过的分类
$param['类别'] =
数组 ( ['category1'] => 5 ['category2'] => 12 ['category3'] => 19)
$product_id = 1
以及更新数据透视表上数据的代码,如下所示: …