我需要帮助从原始SQL查询构建Laravel查询。我尝试了很多方法,没有找到我的运气。有谁能够帮我?我的Raw SQL代码如下所示。
SELECT exams. * , count( question_details.exam_id ) AS qus_enter
FROM exams
INNER JOIN question_details ON exams.id = question_details.exam_id GROUP BY exams.id
这是我尝试过的:
$examListsID = DB::table('exams')
->join('question_details', function($join) {
$join->on('exams.id', '=', 'question_details.exam_id as qus_enter');
})
->whereraw('count(qus_enter) = exams.total_question')
->select('exams.id as examID','qus_enter','exams.total_question')
->count('qus_enter')
->groupby('exams.id')
->get();
$examLists = Addexam::where('id','=',$examListsID->examID)
我收到此错误:
SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便在
qus_enter
附近使用正确的语法,其中count(qus_enter)= exams.total_question'在第1行(SQL:选择计数(qus_enter
)作为exams
上question_details
内部加入exams
的汇总。id
=question_details
。{ {1}}为exam_id
,其中count(qus_enter)= exams.total_question)
答案 0 :(得分:1)
$result = DB::table('exams')->join('question_details','exams.id','=','question_details.exam_id')->select([
exams.*,
DB::raw('count( question_details.exam_id ) AS qus_enter')
])->GroupBy('exams.id')->get()
希望这有帮助
答案 1 :(得分:0)
DB::listen(function ($data) {
var_dump($data->bindings);
dd($data->sql);
});