Почему идентификатор заменяется значением из другой таблицы? Laravel BelongsTo - PullRequest
0 голосов
/ 14 ноября 2018

у меня 4 таблицы. Чемпионаты, пользователи, роли и users_roles.

Один пользователь принадлежит к чемпионату в качестве судьи. Но я должен выбирать только тех пользователей, которые имеют роль «Судья».

Для этого я создал новый столбец в таблице чемпионатов, который называется "main_judge", и создал новые отношения

class Championship extends Model
{
    ...
    public function mainJudge()
    {
        return $this->hasOne('App\User', 'id', 'main_judge');
    }
    ...
}

Затем я добавляю для запроса некоторый код

$query->join('users_roles', 'users.id',  '=', 'users_roles.user_id')
            ->join('roles', 'users_roles.role_id', '=', 'roles.id')
            ->where('roles.alias', '=', 'judge');

когда я печатаю запрос как sql, я получил (см. Экран)

http://joxi.ru/a2X45M1Sw0RpE2

и после $ query-> get () вместо идентификатора пользователя я получил идентификатор роли (см. Экран)

http://joxi.ru/bmoxMaDs3NVoE2

1 Ответ

0 голосов
/ 14 ноября 2018

Я бы предложил использовать eloquent, а не конструктор запросов, поскольку это избавит от необходимости вручную определять любые объединения.

Вы должны просто сделать это:

$championship = Championship::find($id);

$judge = $championship->mainJudge;

Еслитогда вы dd($judge) должны получить соответствующий User объект.

...