Как использовать HasManyThrough, соединяя 3 таблицы через 2 сводные таблицы в Laravel? - PullRequest
0 голосов
/ 07 ноября 2019

У меня возникают проблемы, когда я обдумываю отношения HasManyThrough в Laravel 5.8, которые, как мне кажется, мне нужно использовать, но я не уверен, как их реализовать. Я попытался проследить по видео Laracasts, где Джеффри описывает его и прочитать документы, но сейчас я не могу понять концепцию и чувствовать себя довольно глупо.

Как мне определить отношения в моих моделях и написать правильный Eloquent запрос в моем ProductsController для отображения сообщений в представлении продукта с одинаковым идентификатором тега?

Например, у меня есть сообщение с тегом "mbti", и у меня есть продукт с тегом "mbti". Как бы я мог отобразить соответствующие сообщения в соответствующем представлении продукта? Мне уже удалось отобразить теги в представлении, но я хочу, чтобы посты, связанные с этим тегом, также отображались. Я ценю любые рекомендации о том, как мне подходить к этому.

У меня есть 3 таблицы и 2 сводные таблицы (некоторые имена столбцов для краткости удалены):

| products |
+----------+
|id        |
------------

| posts    |
+----------+
|id        |
------------

| tags    |
+----------+
|id        |
------------

| post_tag |
+----------+
|post_id   |
|tag_id    |
------------

| product_tag |
+-------------+
|product_id   |
|tag_id       |
---------------

Мои модели:

Post.php

public function tags() {
   return $this->belongsToMany('App\Tag')->withPivot('tag_id');
}

Tag.php

public function posts() 
{
  return $this->belongsToMany('App\Post')->withPivot('post_tag');
}

public function products() 
{
  return $this->belongsToMany('App\Product')->withPivot('product_tag');
}

Product.php

public function tags() 
{
  return $this->belongsToMany('App\Tag')->withPivot('product_id');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...