【发布时间】:2021-01-22 09:53:56
【问题描述】:
我有以下表结构。
学生
-
身份证
-
名字
-
姓氏
-
roll_number
我有以下查询:
$query = Student::select(
'first_name',
'last_name',
'roll_number',
DB::raw('CONCAT(first_name,last_name) as full_name')
)->groupBy('full_name');
我想要得到的是计算具有唯一全名的行。
当我在上面的查询中附加 ->count() 时,它会给出 full_name 的 Column not found 异常
我的方法:
$query = Student::select(
'first_name',
'last_name',
'roll_number',
DB::raw('CONCAT(first_name,last_name) as full_name')
)->groupBy('full_name');
$count = $query->get()->count();
它给了我正确的计数,但是当我在数据库中有大量学生时,可能会出现一些性能问题,因为在计数集合$query->get() 时将处理所有学生。
有什么方法可以实现我想要实现的目标吗?
非常感谢您的建议,如果我们在 laravel 中无法实现,请提供详细信息。
【问题讨论】:
标签: php mysql laravel eloquent