【问题标题】:How to select items if count more than 3 in Laravel Query如果在 Laravel Query 中计数超过 3,如何选择项目
【发布时间】:2021-07-25 16:27:56
【问题描述】:

我的表searchkeywordsQuery 列中有许多相同的值@
我想选择 count > 3 以及我想调用 searchkeywords 其他数据。

例如苹果,苹果,苹果,香蕉,香蕉,葡萄,葡萄,葡萄,葡萄,橙子……

因此,选择并显示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

所以,我只能调用查询列,除此之外,当我使用{{$search->id}}调用时,idcreated 列也在那里,它会抛出错误:

未定义属性:stdClass::$id

【问题讨论】:

    标签: php mysql laravel


    【解决方案1】:

    您需要的列应该是 selectRaw,如:

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

    【讨论】:

      【解决方案2】:

      您的查询不会返回正确的数据

      • 你不见了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
      )
      

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

      【讨论】:

        猜你喜欢
        • 2018-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多