Php 在拉雷维尔7号有没有办法接近远方的亲戚?

Php 在拉雷维尔7号有没有办法接近远方的亲戚?,php,database,laravel,eloquent,relationship,Php,Database,Laravel,Eloquent,Relationship,我有四个表格,不知怎的,在我的工资表中,我想选择一名员工并填写他/她的工资明细。唯一的问题是,我无法获取员工职位的详细信息,因为它没有直接连接到Payrolls表 员工模式 class Employees extends Model { protected $fillable = [ 'fname', 'lname', 'gender', 'address', 'positions_id' ]; public function positions()

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

员工模式

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);
}
}
职位模型

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);
}
}
工资单模型

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);
}
}

有没有办法把工资单和职位联系起来?我想从职位表中获取基本工资,并将其显示在工资表上(可能通过中间表)。

我算出了。

我使用query builder连接控制器上的三个表(员工、工资单、职位):

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>
位置:
{{$position\u name->pull('name')->first()}

基本工资: {{$basic\u pay->pull('basic\u pay')->first()}

我使用Pulk来提取想要显示的列字段。

我找到了它。

我使用query builder连接控制器上的三个表(员工、工资单、职位):

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>
位置:
{{$position\u name->pull('name')->first()}

基本工资: {{$basic\u pay->pull('basic\u pay')->first()}

我使用Pulk来提取想要显示的列字段。

到目前为止,您尝试了什么?员工模型有一个
position\u id
,那么获取引用实体有什么问题呢?@NicoHaase我已经显示了一个工资单,不知怎的,我只能在工资单页面中获取
positions\u id
,如下所示:
{{$payrolls->employees->pull('positions\u id')->first()}
我想要的是在show.blade Payroll中提取
basic_pay
列,这样我就可以进行不可能的计算,我只会得到一个错误。到目前为止,您尝试了什么?员工模型有一个
position\u id
,那么获取引用实体有什么问题呢?@NicoHaase我已经显示了一个工资单,不知怎的,我只能在工资单页面中获取
positions\u id
,如下所示:
{{$payrolls->employees->pull('positions\u id')->first()}
我想要的是在show.blade Payroll中提取
basic_pay
列,这样我就可以进行不可能的计算,而且我只得到一个错误。