为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
隔江千里 2023-06-24 18:29:44
我有四个表,在我的工资表中,我想选择一名员工并填写他/她的工资单详细信息。唯一的问题是我无法获取员工职位详细信息,因为它没有直接连接到工资表。员工模型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 并将其显示在工资表上(可能通过中间表)。
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

我想到了。


我使用查询生成器连接控制器上的三个表(员工、工资单、职位):


public function show(Employees $employee, Payrolls $payroll)

{

    $basic_pay = DB::table('payrolls')

    ->join('employees', 'employees.id', '=', 'payrolls.employees_id')

    ->join('positions', 'positions.id', '=', 'employees.positions_id')

    ->select('positions.basic_pay')

    ->where('payrolls.employees_id', '=', $payroll->employees_id)

    ->get();


    $position_name = DB::table('payrolls')

    ->join('employees', 'employees.id', '=', 'payrolls.employees_id')

    ->join('positions', 'positions.id', '=', 'employees.positions_id')

    ->select('positions.name')

    ->where('payrolls.employees_id', '=', $payroll->employees_id)

    ->get();


    return view('payrolls.show')

    ->with('payrolls', $payroll)

    ->with('basic_pay', $basic_pay)

    ->with('position_name', $position_name)

    ->with('employees', $employee);

}

以及我的看法:


<label><h4>Position: </h4></label>

<span style="font-size: 25px">

   {{ $position_name->pluck('name')->first() }}

</span><br>


<label><h4>Basic Pay: </h4></label>

<span style="font-size: 25px">

   {{ $basic_pay->pluck('basic_pay')->first() }}

</span><br>

我使用 pluck 来选取我想要显示的所需列字段。


查看完整回答
反对 回复 2023-06-24
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信