原始查询中的 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 选择计数的主要内容,如果未能解决你的问题,请参考以下文章
用于原始 SQL 查询的等效 Laravel Eloquent
Laravel Eloquent Query - 限制计数()