Php Laravel获得记录最多的前5名ID
我有一个名为Php Laravel获得记录最多的前5名ID,php,mysql,laravel,eloquent,laravel-query-builder,Php,Mysql,Laravel,Eloquent,Laravel Query Builder,我有一个名为errors的表,其中包含以下字段:id、网站id、消息和级别。我正在尝试获取错误最多的前5个网站 查询 选择网站\u id,将(id)计算为“错误” 从错误组按网站\u id按计数排序(*)说明 我不知道如何使用Laravel查询生成器和Elotent来实现这一点。有人能帮我吗 数据库屏幕截图 试试这个: 您可以使用该函数执行原始查询 但是,如果你想使用雄辩的语言,你就必须使用关系并对它们进行查询。例如,如果您的网站模型与错误模型相关,则可以执行以下操作以获得错误最多的网站模型:
errors
的表,其中包含以下字段:id、网站id、消息和级别。
我正在尝试获取错误最多的前5个网站
查询
选择网站\u id,将(id)计算为“错误”
从错误组按网站\u id按计数排序(*)说明
我不知道如何使用Laravel查询生成器和Elotent来实现这一点。有人能帮我吗
数据库屏幕截图
试试这个:
您可以使用该函数执行原始查询
但是,如果你想使用雄辩的语言,你就必须使用关系并对它们进行查询。例如,如果您的网站
模型与错误
模型相关,则可以执行以下操作以获得错误最多的网站模型:
Website::withCount('errors') // Count the errors
->orderBy('errors_count', 'desc') // Order by the error count
->take(5) // Take the first 5
->get();
这可能会有帮助
$result = Website::selectRaw("website_id,count(id) as errors")
->groupBy('website_id')
->orderBy('errors','DESC')
->limit('5')
->get();
试试这个简化版,让拉雷维尔口若悬河
$some_data = YourModel::select('column_name')
->groupBy('column_name')
->orderByRaw('COUNT(*) DESC')
->take(5)
->get();
为我工作!谢谢。欢迎:)好运气你的解决方案看起来也很有效,所以我也要试试!谢谢你的帮助。@KoenvandeSande如果我是你,我会使用这个雄辩的解决方案,而不是使用原始的查询。是的,我将尝试两种方法,看看哪一种对我的应用程序最好、最有用@Alexeymezenin您的解决方案确实更好,再次感谢您的帮助!
$some_data = YourModel::select('column_name')
->groupBy('column_name')
->orderByRaw('COUNT(*) DESC')
->take(5)
->get();