原始查询中的 Laravel 选择计数

Posted

技术标签:

【中文标题】原始查询中的 Laravel 选择计数【英文标题】:Laravel select count in raw query 【发布时间】:2021-10-29 14:25:49 【问题描述】:

我需要在Laravel 中使用Eloquent 进行计数。我的查询:

$sqlQueryCount = " SELECT COUNT(*)
        FROM client_order co 
        INNER JOIN client c ON c.id = co.client_id
        LEFT JOIN user u ON u.id = co.user_id
        WHERE co.user_id = ?
         ";
        
       $resultCount = DB::select($sqlQueryCount,
            [$userId])->count();

它不起作用,不能在数组上使用count()

【问题讨论】:

我从来没有在 Laravel 上运行过这样的完整查询。但是您说select 正在返回array(因为当您执行->count 时会引发该错误。所以我认为您需要做2 个小改动,首先为count 添加一个名称,例如@ 987654329@ 或类似名称,然后删除 ->count() 并在运行 select 后,在新行中执行 $resultCount['total'] 或您决定使用的名称。它应该可以工作。 【参考方案1】:

试试这样的

DB::table('client_order')
        ->join('client ', 'client.id', '=', 'client_order.client_id')
        ->leftJoin('user ', 'user.id', '=', 'client_order.user_id')
        ->where('client_order.user_id',$user->id)->count();

【讨论】:

以上是关于原始查询中的 Laravel 选择计数的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4中的倍数数据库原始选择中的转义值

Laravel 5 原始选择查询不返回任何内容

用于原始 SQL 查询的等效 Laravel Eloquent

Laravel Eloquent Query - 限制计数()

laravel:当计数达到给定值时如何从 foreach 循环中删除选定的数据

Mysql 选择查询计数和 Distinct 无法正常工作