Laravel在插入查询中属于ToMany表顺序

时间:2016-04-14 15:01:23

标签: php mysql laravel many-to-many models

我有两个型号,产品和过滤器。

产品可以有多个过滤器,一个过滤器可以有许多产品。多对多关系。

在我的产品中我有:

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?

2 个答案:

答案 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_idproduct_id