Laravel 7 有没有办法访问远程关系?

我有四个表,在我的工资表中,我想选择一名员工并填写他/她的工资单详细信息。唯一的问题是我无法获取员工职位详细信息,因为它没有直接连接到工资表。

http://img1.mukewang.com/6496c5b30001f61806360269.jpg

员工模型


class Employees extends Model

{

protected $fillable = [

    'fname',

    'lname',

    'gender',

    'address',

    'positions_id'

];


public function positions()

{

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

}


public function payrolls()

{

    return $this->belongsToMany(Payrolls::class);

}

}

职位模型


class Positions extends Model

{

protected $fillable = [

    'name',

    'basic_pay'

];


public function employees()

{

    return $this->hasMany(Employees::class);

}

}

薪资模型


class Payrolls extends Model

{

protected $fillable = [

    'days_work',

    'overtime_hrs',

    'late',

    'absences',

    'bonuses',

    'employees_id'

];


public function employees()

{

    return $this->belongsToMany(Employees::class);

}

}

有没有办法可以连接工资单和职位?我想从职位表中获取 basic_pay 并将其显示在工资表上(可能通过中间表)。


隔江千里
浏览 78回答 1
1回答

狐的传说

我想到了。我使用查询生成器连接控制器上的三个表(员工、工资单、职位):public function show(Employees $employee, Payrolls $payroll){&nbsp; &nbsp; $basic_pay = DB::table('payrolls')&nbsp; &nbsp; ->join('employees', 'employees.id', '=', 'payrolls.employees_id')&nbsp; &nbsp; ->join('positions', 'positions.id', '=', 'employees.positions_id')&nbsp; &nbsp; ->select('positions.basic_pay')&nbsp; &nbsp; ->where('payrolls.employees_id', '=', $payroll->employees_id)&nbsp; &nbsp; ->get();&nbsp; &nbsp; $position_name = DB::table('payrolls')&nbsp; &nbsp; ->join('employees', 'employees.id', '=', 'payrolls.employees_id')&nbsp; &nbsp; ->join('positions', 'positions.id', '=', 'employees.positions_id')&nbsp; &nbsp; ->select('positions.name')&nbsp; &nbsp; ->where('payrolls.employees_id', '=', $payroll->employees_id)&nbsp; &nbsp; ->get();&nbsp; &nbsp; return view('payrolls.show')&nbsp; &nbsp; ->with('payrolls', $payroll)&nbsp; &nbsp; ->with('basic_pay', $basic_pay)&nbsp; &nbsp; ->with('position_name', $position_name)&nbsp; &nbsp; ->with('employees', $employee);}以及我的看法:<label><h4>Position: </h4></label><span style="font-size: 25px">&nbsp; &nbsp;{{ $position_name->pluck('name')->first() }}</span><br><label><h4>Basic Pay: </h4></label><span style="font-size: 25px">&nbsp; &nbsp;{{ $basic_pay->pluck('basic_pay')->first() }}</span><br>我使用 pluck 来选取我想要显示的所需列字段。
打开App,查看更多内容
随时随地看视频慕课网APP