我有两个型号,产品和过滤器。
产品可以有多个过滤器,一个过滤器可以有许多产品。多对多关系。
在我的产品中我有:
public function filters () {
return $this->belongsToMany('App\Models\Filter');
}
在我的过滤器中:
public function products () {
return $this->belongsToMany('App\Models\Product')->withTimestamps();
}
当我尝试插入产品并保存过滤器之后:
$filtersId = $request->filter;
$product->filters()->attach($filtersId);
我收到了这个错误:
Base table or view not found: 1146 Table 'pontocom-moveis.filter_product' doesn't exist (SQL: insert into `filter_product` (`filter_id`, `product_id`) values (1, 31))
如何将订单更改为product_filter?
答案 0 :(得分:1)
方法的第二个参数是表名。
所以在这种情况下你应该使用:
public function filters () {
return $this->belongsToMany('App\Models\Filter', 'product_filter');
}
public function products () {
return $this->belongsToMany('App\Models\Product', 'product_filter')->withTimestamps();
}
答案 1 :(得分:0)
您应该创建具有属性的表filter_product
:
filter_id
和product_id