У меня есть три таблицы, таблица статей, таблица тегов и промежуточная сводная таблица с именем article_tags, которая содержит только article_id и tag_id, образуя отношение «многие ко многим».
Я хочу написать функцию, которая получает Статью и возвращает коллекцию или запрос со всеми Статьями, которые разделяют хотя бы один тег с полученной Статьей , после того, как я попробовал несколько разных решений, у меня есть это:
public function scopeRelated($query, Article $article)
{
return $query->whereHas('tags', function ($query) use ($article) {
// I've tried a bunch of different lines, like just $article->tags
$query->whereIn('tags', $article->tags->pluck('id'));
});
}
Возвращает ошибку:
Освещение / База данных / QueryException с сообщением «SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец« теги »в« выражении where »(SQL: выберите * из articles
, где существует (выберите * из tags
внутреннее соединение article_tag
в tags
. id
= article_tag
. tag_id
, где articles
. id
= article_tag
.article_id
и tags
in (1, 6, 4))) '
Очевидно, Eloquent пытается сопоставить теги со столбцом' tags 'в таблице Articles, который не'не существует.Как правильно спросить, чего я хочу?