我有3个带有此字段的表:
User:
id
name
address
Employee:
id
user_id
Profile:
id
employee_id
我该如何关联来自user->name
模型的Profile
class Profile extends Model
{
public function employee()
{
return $this->belongsTo('App\Employee', 'employee_id');
}
public function user()
{
return $this->belongsTo('App\User', $employee->user_id);
}
}
user()
函数显然是错误的,T试图从Profile
获取用户数据。正确的方法是什么?
答案 0 :(得分:1)
使用HasOneThrough关系。
class Profile extends Model
{
public function employee()
{
return $this->belongsTo('App\Employee', 'employee_id');
}
/**
* Get the User
*/
public function user()
{
return $this->hasOneThrough('App\User', 'App\Employee');
}
}
现在,您可以使用以下用户名
$profile->user->name
您可以在laravel官方文档中查看示例用法:
https://laravel.com/docs/5.8/eloquent-relationships#has-one-through
答案 1 :(得分:1)
使属于。 Profile
属于与Employee
和Employee
属于User
class Profile extends Model
{
public function employee()
{
return $this->belongsTo('App\Employee', 'employee_id');
}
}
class Employee extends Model
{
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
}
在您的控制器中,您可以使用如下配置文件获取用户数据。
$profile = Profile::with('employee.user')->first();
echo $profile->employee->user->name;