如果在laravel查询中计数超过3,如何选择项目

ergxz8rk  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(263)

我的表中有许多相同的值 Query 表列 searchkeywords 我想选择计数是否大于3,以及我想调用其他数据。
e、 苹果,苹果,苹果,香蕉,香蕉,葡萄,葡萄,葡萄,葡萄,橙子。。。
所以,选择并显示 AppleGrapes 仅当它们的id和其他列数据超过3时。
我正在使用这个查询
控制器代码:

$topsearches = DB::table('searchkeywords')
->selectRaw('query,count(*) as count')
->havingRaw('count(*) > 3')
->orderBy('created', 'DESC')
->paginate(15);

查看代码:

@foreach($topsearches as $search)
 {{$search->query}}
@endforeach

所以我只能调用查询列,除了这个, idcreated 当我使用 {{$search->id}} ,它抛出错误:
未定义的属性:stdclass::$id

hjzp0vay

hjzp0vay1#

您需要的列应使用selectraw,如下所示:

$topsearches = DB::table('searchkeywords')
    ->selectRaw('query,id,created,count(*) as count')
    ->havingRaw('count(*) > 3')
    ->orderBy('created', 'DESC')
    ->groupBy('query')
    ->paginate(15);
t5zmwmid

t5zmwmid2#

您的查询不会返回正确的数据
你失踪了 group by 您没有选择 idcreated
我已在此处修复了您的查询:http://sqlfiddle.com/#!9/bdb363/4

SELECT * 
FROM searchkeywords
WHERE query IN (
    SELECT query
    FROM searchkeywords
    GROUP BY query
    HAVING count(*) > 3
)

查询将返回表中记录的总数。

相关问题