我想优化我的代码,所以我试图只选择我实际需要的那些字段进入
questionBankOptions
部分但问题是我收到Integrity constraint violation: 1052 Column 'id' in field list is ambiguous
的错误所以试图删除这部分select('id as optionId','question_bank_id','option','option_image','correct','status')
它在那里在 questionBankOptions
中,我没有看到任何错误。所以我不明白为什么我会收到这个错误。
$assesmentQuestion = AssesmentQuestion::with(['questionBank:id,remarks,question,question_img,question_format','questionCategories','questionBankOptions' => function($q){
$q->select('id as optionId','question_bank_id','option','option_image','correct','status')->where('status',0);
}])->select(['id','question_bank_id','preferences','assesment_id'])->where('assesment_id',$id)->orderBy('preferences','ASC')->get();
完整错误
Integrity constraint violation: 1052 Column 'id' in field list is ambiguous (SQL: select `id` as `optionId`, `question_bank_id`, `option`, `option_image`, `correct`, `status`, `question_banks`.`id` as `laravel_through_key` from `question_bank_options` inner join `question_banks` on `question_banks`.`id` = `question_bank_options`.`question_bank_id` where `question_banks`.`id` in (61, 62, 65, 66, 67, 68, 70, 71, 72, 73, 75) and `status` = 0)
查询不知道
'id as optionId'
应该在哪个 id 上,因为 questionBank
显然使用了内部连接。您需要指定表名。我猜你想要 question_bank_options
的 id,所以只需像下面这样添加它。
$q->select('question_bank_options.id as optionId','question_bank_id',...