表之间的关系不起作用

时间:2019-10-28 12:19:09

标签: laravel eloquent

我有两个表userprofile。配置文件表具有user_id作为外键。我已经关联了两个表。

在修补程序中,我可以看到建立了这种关系,但是在代码中却没有从其他表中获取详细信息。

我也尝试过

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

用户模型

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

个人资料模型

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

2 个答案:

答案 0 :(得分:1)

我看到两件事并不完全正确。

在修补程序中获取用户的个人资料,请插入以下行:

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

然后:

$user->profile();

如果要关联:: class,则应使用:

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

如果要使用字符串关联,应使用:

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

另一个提示是,每次更换控制器时,您都必须关闭并再次打开修补器。

答案 1 :(得分:1)

尝试为hasOnebelongsTo方法指定键,如下所示:

 $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