Laravel по-русски

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

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

#1 04.01.2019 08:38:24

Вывести все посты у которых есть хотя бы 1 комментарий

Вывожу все посты

Post::all();

А как вывести только посты хотя бы с одним комментарием?

Не в сети

#2 04.01.2019 09:12:44

Re: Вывести все посты у которых есть хотя бы 1 комментарий

В таблице posts у тебя должно быть поле, в котором указано количество комментариев для каждой записи. По умолчанию значение поля 0. При написании комментария значение увеличивается на 1. Соответственно, пишешь

    $comments = Post::where('comments', '>', '0')->get();

Это один вариант. Второй вариант - получать данные из таблицы comments. В ней долджно быть связанное поле, например, post_id, значение которого равно id записи в таблице posts. Но, как мне кажется, первый вариант предпочтительнее и проще.

Не в сети

#3 04.01.2019 09:18:57

Re: Вывести все посты у которых есть хотя бы 1 комментарий

не, варианты так себе
Великий могучий sql язык и Laravel способны на большее, я в этом уверен!
Нужны знающие люди в этом вопросе! У меня просто минимальные знания по sql

Не в сети

#4 04.01.2019 10:08:12

Re: Вывести все посты у которых есть хотя бы 1 комментарий

Что то на подобии этого, только работа через модель!

DB::table('users')
            ->whereExists(function ($query) {
                $query->select(DB::raw(1))
                      ->from('orders')
                      ->whereRaw('orders.user_id = users.id');
            })
            ->get();

Не в сети

#5 04.01.2019 10:16:50

Re: Вывести все посты у которых есть хотя бы 1 комментарий

Нашёл ответ! https://laravel.com/docs/5.7/eloquent-r … ted-models

// Retrieve all posts that have at least one comment...
$posts = App\Post::has('comments')->get();

Не в сети

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