Laravel count и raw sql count дают разные значения - PullRequest
0 голосов
/ 17 сентября 2018

Когда я запускаю этот запрос в raw sql:

select count(postsid) as total, postsid
from posts
where postsid = 110
group by postsid

, значение составляет 2971 (это правильно), но когда это попытаться сделать это с Laravel через отношения:

$item->posts->count('postsid')

возвращаемое значение - 30934 (что неверно).Я использую функцию неправильно или проблема в другом месте?

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Это потому, что COUNT (ID) возвращает количество только ненулевых записей.ИЛИ Попробуйте следующее

$item->posts->distinct('postsid')->count('postsid')
0 голосов
/ 17 сентября 2018

Я думаю, что вы пропустите условие where и group by

$item->posts
    ->select('posts.*', DB::raw('count(postsid) as total, postsid'))
    ->where('postsid', '=', 110)
    ->group_by('postsid')
    ->get();
0 голосов
/ 17 сентября 2018

Ну, вам не хватает postsid = 110 в запросе laravel.

Это должно быть $item->posts->count('postsid',110)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...