Laravel 5.4 Eloquent Issue Issue

Мне нужно очистить мои сомнения по поводу красноречивых отношений. У меня есть 2 модели User (которая поставляется с Laravel), а Other is Role, которую я создал. в процессе миграции я добавил role_id в качестве дополнительного столбца, так как я хочу, чтобы у каждого пользователя была роль, теперь я хочу получить роль пользователя на основе идентификатора пользователя, поэтому я создал публичную функцию с именем role внутри модели пользователя.

    public function roles(){
        return $this->belongsTo(Role::class);
    }

Теперь, когда я пытаюсь выполнить запрос, как это.

  App\User::find(1)->roles;

он не даст никакого результата, только пустой экран, но когда я изменю его на

    public function role(){
        return $this->belongsTo(Role::class);
    }

после этого я запускаю код

  App\User::find(1)->role;

теперь он возвращает точную строку, в которой пользователь с идентификатором 1 играет надлежащую роль. сбивает с толку, почему с функцией role() она не работает, а с функцией role() работает.

Извините, если этот вопрос уже опубликован, вы можете перенаправить меня на этот вопрос.

Благодарю вас!

1 ответ

Решение

Вы должны указать внешний ключ

public function roles()
{
    return $this->belongsTo(Role::class, 'role_id');
}

Тем не менее, называть его role() точнее, поскольку вы предполагаете, что у пользователя может быть только одна роль.

Другие вопросы по тегам