Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 09.02.2020 04:04:43

Как сделать выборку из таблиц многие ко многим?

Здравствуйте!
Задача такая. Есть три таблицы, post, category, category_post. Соответственно в category_post (id_category, id_post) записываются id постов и категорий к этим постам. Нужно вывести схожие по категориям посты, уникальные. То есть, заходя на сайте на страницу записи, я хочу видеть посты из тех же категорий что и сам пост на котором нахожусь, но чтоб они не повторялись. Какие есть решения?

Не в сети

#2 09.02.2020 04:41:14

Re: Как сделать выборку из таблиц многие ко многим?

Хотелось бы увидеть как это делается через eloquent. Я в этом новичок, буду благодарен за ответ.

Не в сети

#3 09.02.2020 21:21:44

Re: Как сделать выборку из таблиц многие ко многим?

У меня нет под рукой подходящей базы, поэтому пишу не попробовав вживую:

$thisPostTagIds = $thisPost->tags->pluck('id');
$posts = Post::whereHas('tags', function($q) use($thisPostTagIds) {
    $q->whereIn('id', $thisPostTagIds);
})->where('id', '<>', $thisPost->id)
->get();

There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела