php - Laravel 查询生成器不工作,显示错误
问题描述
我在 Laravel 框架中使用了以下查询
$student_attendance_search_result = DB::table('tbl_student_attendance')
->join('tbl_student_admission', 'tbl_student_attendance.student_id', '=', 'tbl_student_admission.student_id')
->select(DB::raw('tbl_student_attendance.*,tbl_student_admission.student_id,tbl_student_admission.student_full_name_english,tbl_student_admission.class,tbl_student_admission.section,tbl_student_admission.roll_no, count(case when attendance_status ="Absent" then 1 end) as total_absent,count(case when attendance_status ="Present" then 1 end) as total_present,count(case when attendance_status ="Leave" then 1 end) as total_leave,count(distinct date) as total_class'))
->where('tbl_student_attendance.academic_year', $academic_year)
->where('tbl_student_admission.class', $classs)
->where('tbl_student_admission.section', $section)
->where('tbl_student_attendance.month', $month)
->groupBy('tbl_student_admission.student_id')
->get();
当我尝试运行它时抛出以下异常
SQLSTATE[42000]:语法错误或访问冲突:1055 'db_smsfinal1user.tbl_student_attendance.student_attendance_id'不在 GROUP BY 中(SQL:select
tbl_student_attendance
.*,tbl_student_admission
.student_id
,tbl_student_admission
.student_full_name_english
,tbl_student_admission
.class
,tbl_student_admission
.section
,tbl_student_admission
.roll_no
, count(case when admission_status ="Absent " then 1 end) as total_absent,count(case when admission_status="Present" then 1 end) as total_present,count(case when admission_status="Leave" then 1 end) as total_leave,count(distinct date) as total_class fromtbl_student_attendance
inner jointbl_student_admission
ontbl_student_attendance
.student_id
=tbl_student_admission
.student_id
其中tbl_student_attendance
.academic_year
= 2018 和tbl_student_admission
.class
= 2 和tbl_student_admission
.section
= 无和tbl_student_attendance
.month
= 九月分组tbl_student_admission
。student_id
)
知道我在做什么错吗?
解决方案
使用 DB::raw 作为选择参数
DB::select(
DB::raw('student_id,count(case when attendance_status ='Absent' then 1 end) as absent_count,count(case when attendance_status ='Present' then 1 end) as present_count,count(case when attendance_status ='Leave' then 1 end) as leave_count,count(distinct date) as Tot_count')
)->from(..)->groupBy(...);
推荐阅读
- r - Shiny-logs-error-没有名为“tidyverse”的包
- repository - 错误:“~linuxupprising”用户或团队不存在
- javascript - java中的selenium不能点击a href="javascript:void(0);"
- python - 如何删除 TensorFlow 自定义操作实例?
- postgresql - Postgres 内存不足
- javascript - Javascript && 和 || 运算符和内联三元函数产生 INSANE 结果
- r - 如何从两个向量中选择增加的值 - '编织两个向量'
- java - 如何在 java8 中使用 compareTo 对 LinkedLists 进行排序
- java - Hive selectExpression : ( 表达式 | tableAllColumns );])
- amazon-web-services - Alexa 技能控制台返回 null