Laravel пытается получить темы, у которых нет сообщений - PullRequest
2 голосов
/ 30 июня 2019

У меня есть две таблицы, темы и сообщения. Я хочу получить только темы, которые не имеют сообщений.

Я пытался использовать order by, но у меня есть темы, у которых нет сообщений, а также есть темы, у которых есть сообщения, так что это неправильно.

Topic::where('locale', $locale)
    ->withCount('posts')
    ->orderBy('posts_count', 'ASC')
    ->paginate(15);

Ответы [ 2 ]

4 голосов
/ 30 июня 2019

Если вы пытаетесь получить все темы, у которых нет сообщений, попробуйте следующее:

Topic::doesntHave('posts')->paginate(15);

Если вы хотите отфильтровать определенное (максимальное) количество сообщений, сделайте следующее:

Topic::has('posts', '<=', $count)->paginate(15);
1 голос
/ 30 июня 2019

Если вы пытаетесь получить темы без постов, вы можете использовать doesntHave, если ваши модели настроены правильно:

$topicsWithoutPosts= Topic::doesntHave('posts')->where('locale',$locale)->paginate(15);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...