我有两个模型:Question
和Answer
。一个问题有很多答案。要急切地加载问题的答案,必须这样写:
$question->load('answers');
但是,所有答案的属性都是以这种方式加载的。以下代码虽然说明了我想要实现的目标,但却无效:
$quesiton->load('answers')->select('id', 'body')
那么,我如何只用各自的id
和body
属性来加载问题的答案?
答案 0 :(得分:2)
你应该试试这个:
$question->load(['answers' => function ($query) {
$query->select('id', 'body', 'question_id');
}]);
如您所见,仅加载id
和body
可能还不够。假设您拥有Answer
模型question_id
字段,则还应在select
中指定该字段,否则不会将答案分配给问题。
答案 1 :(得分:1)
使用冒号指定列也有效:
$question->load('answers:id,body');