Laravel — hasManyThrough и энергичная загрузка, получить столбец из связанных

Я получаю некоторые странные вещи, когда пытаюсь загрузить связанную модель, используя hasManyThrough.

У меня есть модель Сообщества, в которой есть функция «соседей по комнате», чтобы получить всех пользователей с идентификатором сообщества в столбце «сообщество», см. Код ниже.

    public function roommates()
{
return $this->hasManyThrough('App\User', 'App\Community', 'id', 'community');
}

Затем пользовательская модель выбирается из Auth после входа в систему и активно загружает связанные модели и отображает только те столбцы, которые мне нужны. идентификатор, имя, адрес электронной почты

$user = User::where('id', Auth::id())->with(['community.roommates' => function ($query)
{
$query->select('users.id', 'name', 'email');
}])->first();

Однако мой ответ JSON не соответствует ожиданиям, возвращаемый идентификатор выглядит как идентификатор сообщества, хотя я указал ‘users.id’

{
"status": true,
"data": {
"id": 3,
"name": "Foo Bar",
"email": "[email protected]",
"community": {
"id": 1,
"owner": 3,
"title": "Home",
"created_at": "2015-10-09 08:04:05",
"updated_at": "2015-10-09 08:04:05",
"roommates": [
{
"id": 1,
"name": "Foo Bar 2",
"email": "[email protected]"},
{
"id": 1,
"name": "Foo Bar",
"email": "[email protected]"}
]
},
"remember_token": "tprkiNOYbBiViwQkVcJMcwU8poZ1/00Uktmy7AQ+",
"created_at": "2015-10-09 08:03:42",
"updated_at": "2015-10-10 04:56:14"}
}

Как вы можете видеть, идентификатор для обоих пользователей в массиве соседей по комнате равен 1, однако идентификаторы этих пользователей — 2 и 3.

Есть идеи?

Я все еще чувствую себя с Ларавелом, так что я не знаю, куда идти?

0

Решение

Завершая работу над этим,

Я изменил использовать hasMany вместо hasManyThrough

    public function roommates()
{
return $this->hasMany('App\User', 'community_id', 'id')->select(['community_id', 'id', 'name', 'email']);
}

А также мне нужно было выбрать внешний ключ, community_id, иначе я бы получил пустой результат.

Кредиты на этот вопрос помогают мне разобраться

Laravel Eager Загрузка — загрузка только определенных столбцов

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]