如果在 Eloquent laravel 6 中具有一对多关系,如何从其他 table 获取值?

How to get a value from other table if it has one to many relation in Eloquent laravel 6?

我有 2 个 tables。

 1. Staff <br/>
    id | fname | lname | department

 2. Department<br/>
    id | name

Staff 和 Department 之间存在关系。部门有很多员工,员工有一个部门。现在我正在尝试获取员工的数据。因此,我应该从 department table.

中获取名称,而不是在 Staff table 中获取 department

这是我的模型 - Staff Model

class Staff extends Model
{
    protected $table = 'staff';

    protected $fillable = ['fname', 'lname', 'department'];

    function departments(){
        return $this->belongsTo(Department::class, 'department');
    }
}

和 - Department Model

class Department extends Model
{
    protected $table = 'departments';

    protected $fillable = ['name', 'updated_at'];

    function staff(){
        return $this->hasMany('App\Staff', 'department');
    }
}

在我的控制器中,我试图获取所有员工,但我得到的是部门 ID。我需要那个部门的名字。怎么可能?

提前致谢。

由于是一对多的关系department,需要修改staff model 检查 -

class Staff extends Model
{
    protected $table = 'staff';

    protected $fillable = ['fname', 'lname', 'department'];

    function departments(){
        return $this->belongsTo(Department::class, 'id');
    }
}

现在,如果您想获取所有员工信息。

在你的controller-

public function index(){
 $data = Staff::with('departments')->find(1);
return $data->departments->name;
}

希望它能奏效。