(Laravel)如何在模型中关联外键的外键

时间:2019-08-21 03:46:23

标签: php laravel laravel-5

我有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获取用户数据。正确的方法是什么?

2 个答案:

答案 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 属于EmployeeEmployee属于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;