Laravel Moloquent. Добавить проекцию в связанную модель

#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();