У меня возникают проблемы, когда я обдумываю отношения 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');
}