Я пытаюсь внедрить сайт типа блога, где пользователь может оценивать сообщения. Таким образом, отношения, как это:Laravel Отношения через подкатегорию
Blog -> blog_links; To Many fk = blog_id
User -> blog_links; To Many fk = user_id
Я пробовал эти решения, и каждый раз получить другую ошибку:
User::hasManyThrough(Blog::class, BlogLink::class);
Это не сработало, поэтому я попытался область действия запроса:
scopeWithLinksAndResorts($query) {
return $query->with(['resorts' => function($q) {
$q->ordered()->withLinks();
}]);
}
Это, похоже, не дает никаких результатов. Поэтому я не уверен, что я делаю неправильно здесь. А вот пример таблицы:
блоги
id Title Text
1 Test This is a test blog
пользователи
id email
1 [email protected]
blog_links
id blog_id user_id rating
1 1 1 4
Теперь от этого я хочу, чтобы получить блоги пользователь рейтинга и их рейтинг , Но, как я уже сказал, я не получаю никаких результатов. Любой, кто может помочь?
Прекрасно работает. Не понимал, что вы можете сделать ownToMany через подтаблицу, я подумал, что это то, для чего был hasManyThrough? Или это используется в другой ситуации? – Byakku
Когда у вас есть много разных отношений, должна быть сводная таблица, и вы устанавливаете отношение в своих моделях с помощью ownToMany, см. (Https://laravel.com/docs/5.4/eloquent-relationships#many-to-many). «Отношение« has-many-through »обеспечивает удобный ярлык для доступа к дистанционным отношениям через промежуточное отношение.« См. (Https://laravel.com/docs/5.4/eloquent-relationships#has-many-through) – Nerea