Laravel - Выбрать столбцы отношений - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь написать запрос, который выбирает столбцы из модели, а затем выбирает один столбец из таблицы отношений.

Модель группы

   public function members(){
    return $this->hasManyThrough('App\User', 'App\Membership', 'team_id', 'id', 'id', 'user_id');
}

Модель члена (пользователя)

public function skills()
{
   return $this->belongsToMany('App\Skill');
}

Функция

Запрос, который я предпринял, но безуспешно:

 $members = $this->team->members()
        ->select('id', 'name')
        ->with(['skills' => function ($query) {
          $query->select('name');
        }])
        ->get();

дамп запроса

Когда я выгружаю запрос, он возвращает только данные для столбцов id и name из командной таблицы, но отношение навыков возвращается пустым, когда я хочу вернуть имя из этой таблицы.

#relations: array:1 [▼
    "skills" => Illuminate\Database\Eloquent\Collection {#1657 ▼
      #items: []
    }
  ]

Как мне взять столбец name из таблицы отношений skills в этом запросе?

Ответы [ 2 ]

2 голосов
/ 06 августа 2020

Чтобы выбрать столбец в отношении, вы можете использовать это:

->with('members.skills:id,name')

Если вы не передаете атрибут id внутри with, отношение не может работать

0 голосов
/ 06 августа 2020

Вам необходимо добавить id в поля, возвращаемые из таблицы skills. В противном случае Eloquent не сможет связать навык с правильной командой.

->with(['skills' => function ($query) {
    $query->select('id', 'name');
}])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...