2016-04-14 5 views
0

У меня есть две модели, продукт и фильтр.Laravel принадлежитToMany порядок таблиц в запросе вставки

Продукт может иметь много фильтров и один фильтр может иметь много продуктов. От многих до многих.

В моем продукте у меня есть:

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?

ответ

1

Второй параметр метода является имя таблицы.

Так что в этом случае вы должны использовать:

public function filters() { 
    return $this->belongsToMany('App\Models\Filter', 'product_filter'); 
} 

public function products() { 
    return $this->belongsToMany('App\Models\Product', 'product_filter')->withTimestamps(); 
} 
0

Вы должны создать таблицу: filter_product с атрибутами:

filter_id и product_id

+0

Я уже создал таблицу для этих отношений. Я забыл передать имя отношения к ownToMany. Благодарю. –

Смежные вопросы