#laravel #jenssegers-mongodb #moloquent
#laravel #jenssegers-mongodb #moloquent
Вопрос:
У меня есть запрос с отношением.
$dbQuery = $this->someModel
->where('user_id', '<>', Auth::id())
->with(['questions'])
->get(['title', 'status', 'expired_at']);
Список полей в get()
методе определяет список выбранных полей для верхнего уровня выбранных данных. Но мне нужно также добавить проекцию в questions
отношение. Как я могу выбрать только questions._id
и questions.description
?
Я пытался добавить это в get()
список, но это не работает таким образом.
Ответ №1:
Вы можете использовать замыкание с with
для выбора только определенных столбцов:
Model1::with(['model2' => function($query){
$query->select('column1','column2');
}])->get();
Комментарии:
1. При попытке,
select
как вы упомянули, он каждый раз возвращает пустой массив. Может быть, Moloquent неselect
поддерживает, не знаю.
Ответ №2:
Я нашел решение, которое работает для меня на основе ответа @namelivia. Теперь это работает для меня с select
, но это работает с. project
Model1::with(['model2' => function($query){
$query->project([
'column1' => 1,
'column2' => 1,
'foreign_key' => 1 /* can not be excluded. */
]);
}])->get();