Связь между таблицей не работает - PullRequest
3 голосов
/ 28 октября 2019

У меня есть две таблицы user и profile. Таблица профиля имела user_id в качестве внешнего ключа. Я связал две таблицы.

В тинкере я вижу, что связь установлена, но в коде не извлекаются детали из другой таблицы.

Я также пробовал

return $this->belongsTo('User::class');

Модель пользователя

public function profile() {
    return $this->hasOne('Profile');
}

Модель профиля

public function user() {
    return $this->belongsTo('User');
}

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Попробуйте указать ключи для hasOne и belongsTo метода, как показано ниже:

 $this->hasOne('Profile', 'foreign_key', 'local_key');

 $this->belongsTo('User', 'foreign_key', 'local_key');

Смотрите также отношение один к одному: https://laravel.com/docs/6.x/eloquent-relationships#one-to-one

1 голос
/ 28 октября 2019

Я вижу две вещи, которые не совсем верны.

В тинкере для получения профиля пользователя вставьте следующие строки:

$user = User::find([user_id]);

А потом:

$user->profile();

Если вы хотите связать :: class, вы должны использовать:

return $this->belongsTo(User::class);

Если вы хотите использовать ассоциацию строк, следует использовать:

return $this->belongsTo('App\User');
return $this->hasOne('App\Profile');

Каждый раз, когда выпоменять контроллер надо закрыть и снова открыть повозку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...