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() точнее, поскольку вы предполагаете, что у пользователя может быть только одна роль.