Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel获得记录最多的前5名ID_Php_Mysql_Laravel_Eloquent_Laravel Query Builder - Fatal编程技术网

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();