Laravel Moloquent.Добавить проекцию к связанной модели - PullRequest
1 голос
/ 09 апреля 2019

У меня запрос с отношением.

$dbQuery = $this->someModel
    ->where('user_id', '<>', Auth::id())
    ->with(['questions'])
    ->get(['title', 'status', 'expired_at']);

Список полей в методе get() определяет список выбранных полей для верхнего уровня выбранных данных.Но мне нужно также добавить проекцию в отношение questions.Как выбрать только questions._id и questions.description?

Я пытался добавить это в список get(), но это не работает таким образом.

Ответы [ 2 ]

3 голосов
/ 09 апреля 2019

Вы можете использовать замыкание с with для выбора только определенных столбцов:

Model1::with(['model2' => function($query){
    $query->select('column1','column2');
}])->get();
0 голосов
/ 09 апреля 2019

Я нашел решение, которое работает для меня на основе ответа @namelivia. Теперь он работает с select, но работает с project.

Model1::with(['model2' => function($query){
    $query->project([
        'column1' => 1,
        'column2' => 1,
        'foreign_key' => 1 /* can not be excluded. */         
    ]);
}])->get();
...