如何在 laravel 预加载中添加别名以选择查询

问题描述 投票:0回答:1

我想优化我的代码,所以我试图只选择我实际需要的那些字段进入

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)

php laravel eloquent has-many-through eager-loading
1个回答
0
投票

查询不知道

'id as optionId'
应该在哪个 id 上,因为
questionBank
显然使用了内部连接。您需要指定表名。我猜你想要
question_bank_options
的 id,所以只需像下面这样添加它。

$q->select('question_bank_options.id as optionId','question_bank_id',...
© www.soinside.com 2019 - 2024. All rights reserved.