Как реализовать связь многие ко многим с одной моделью? (Laravel)

Столкнулся с такой проблемой ... у меня есть модель - Article - (там все товары - мобильные телефоны, чехлы, наушники и т.п. )

Я хочу чтобы на странице карточки товара отображать к телефону - наушники, чехлы ( то есть реализовать связь многие ко многим ), но получается все товары из одной таблицы - модели.

А как же мне тогда реализовать такую связь - саму к себе?В официальной документации не нашёл


Ответы (1 шт):

Автор решения: Dmitrii Sedov

Вам никто не запрещает создать связующую таблицу например "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 если где-то очепятка, или немного с вызовом накосячил, извиняюсь! нет под рукой данных и проекта, чтобы сделать рабочую модель и более точно описать решение и понять если вдруг ошибся. Но на мысль надеюсь Вас навёл.

→ Ссылка