Как реализовать связь многие ко многим с одной моделью? (Laravel)
Столкнулся с такой проблемой ... у меня есть модель - Article - (там все товары - мобильные телефоны, чехлы, наушники и т.п. )
Я хочу чтобы на странице карточки товара отображать к телефону - наушники, чехлы ( то есть реализовать связь многие ко многим ), но получается все товары из одной таблицы - модели.
А как же мне тогда реализовать такую связь - саму к себе?В официальной документации не нашёл
Ответы (1 шт):
Вам никто не запрещает создать связующую таблицу например "article_merge", где в качестве ключей будут данные из одной таблицы. Например:
article_id child_id
1(телефон) - 1(чехол)
1(телефон) - 4(наушник)
...
Даже наложить ограничения с помощью foreign. Далее для связи модели используйте как-то так главное укажите связующую таблицу:
public function addition_products()
{
return $this->belongsToMany('App\Article', 'article_merge', 'article_id', 'child_id');
}
Ну и собственно получать данные как
$article = Article::find(1);
$addition = $article->addition_products;
P.S если где-то очепятка, или немного с вызовом накосячил, извиняюсь! нет под рукой данных и проекта, чтобы сделать рабочую модель и более точно описать решение и понять если вдруг ошибся. Но на мысль надеюсь Вас навёл.