如何在 select 中调用带有 DB::raw 的 where 子句
How to call where clause with DB::raw inside select
我有三个名为 test_templates 的表格、部分和问题。每个 test_templates 包含一些部分,每个部分可能有多个 questions.Now 我想显示问题 count.Also 共有三种类型的问题
- 多选题
- 编码
- 投稿
每种类型的单独计数。我尝试了下面的代码,但它给了我完整的计数,而不是每种类型的单独计数
foreach ($args['listing'] as $value) {
$args['sections'][$value->id] = Section::leftJoin('questions','sections.id','=','questions.section_id')
->select('sections.template_id','sections.section_name','questions.question_type_id',
DB::raw("(CASE WHEN (questions.question_type_id = 1) THEN count(questions.id) END) as count_1"),DB::raw("(CASE WHEN (questions.question_type_id = 2) THEN count(questions.id) END) as count_2"),DB::raw("(CASE WHEN (questions.question_type_id = 3) THEN count(questions.id) END) as count_3"))
->where('sections.template_id','=',$value->id)
->groupBy('sections.id')
->get();
}
最后整理出上面的问题如:
来自这些表的数据及其代表特定类型的计数在同一查询中找到
foreach ($args['listing'] as $value) {
$args['sections'][$value->id] = Section::leftJoin('questions','sections.id','=','questions.section_id')
->select('sections.*','questions.question_type_id'
,DB::raw('(SELECT count(questions.id) FROM `questions` WHERE `question_type_id` = 1) as mulitple_questions')
,DB::raw('(SELECT count(questions.id) FROM `questions` WHERE `question_type_id` = 2) as coding_questions')
,DB::raw('(SELECT count(questions.id) FROM `questions` WHERE `question_type_id` = 3) as submission_questions'))
->where('sections.template_id','=',$value->id)
->groupBy('sections.id')
->get();
}
我有三个名为 test_templates 的表格、部分和问题。每个 test_templates 包含一些部分,每个部分可能有多个 questions.Now 我想显示问题 count.Also 共有三种类型的问题
- 多选题
- 编码
- 投稿
每种类型的单独计数。我尝试了下面的代码,但它给了我完整的计数,而不是每种类型的单独计数
foreach ($args['listing'] as $value) {
$args['sections'][$value->id] = Section::leftJoin('questions','sections.id','=','questions.section_id')
->select('sections.template_id','sections.section_name','questions.question_type_id',
DB::raw("(CASE WHEN (questions.question_type_id = 1) THEN count(questions.id) END) as count_1"),DB::raw("(CASE WHEN (questions.question_type_id = 2) THEN count(questions.id) END) as count_2"),DB::raw("(CASE WHEN (questions.question_type_id = 3) THEN count(questions.id) END) as count_3"))
->where('sections.template_id','=',$value->id)
->groupBy('sections.id')
->get();
}
最后整理出上面的问题如:
来自这些表的数据及其代表特定类型的计数在同一查询中找到
foreach ($args['listing'] as $value) { $args['sections'][$value->id] = Section::leftJoin('questions','sections.id','=','questions.section_id') ->select('sections.*','questions.question_type_id' ,DB::raw('(SELECT count(questions.id) FROM `questions` WHERE `question_type_id` = 1) as mulitple_questions') ,DB::raw('(SELECT count(questions.id) FROM `questions` WHERE `question_type_id` = 2) as coding_questions') ,DB::raw('(SELECT count(questions.id) FROM `questions` WHERE `question_type_id` = 3) as submission_questions')) ->where('sections.template_id','=',$value->id) ->groupBy('sections.id') ->get(); }