У меня есть проект в Laravel 5.1 с тремя таблицами: статьи, теги и сводная таблица для сохранения отношений «многие ко многим»: таблица article_tag.
Мне нужно, чтобы все статьи, связанные по тэгам, относились к конкретной статье, присваивая основной номер или релевантность тем статьям, у которых по числу тэгов было значительное количество совпадений. Итак, первыми будут те, которые «более связаны».
Например, если мне требуются все статьи с tag_id # 1 и # 2, и если статья A имеет оба тега, но статья B имеет только одно совпадение, я хочу, чтобы обе статьи были упорядочены в последовательности: A, B.
Я думаю, что могу сделать это с помощью оператора mysql:
SELECT articles.*, count(*) as tags_count
FROM article_tag, articles
WHERE tag_id in (1,2)
AND articles.id = article_tag.article_id
GROUP BY article_id
ORDER BY tags_count DESC
Но я хочу использовать Eloquent. Как я могу подойти к этому?