Laravrl之 filter连表查询

模型中

class HzDailyPayroll extends Model 中

 public function workerInfo()
  {
       return $this->belongsTo(HzUserWork::class, "work_id","id");
  }

class HzUserWork extends Model 中

public function shiftInfo()
{
    return $this->belongsTo(HzShiftManage::class,"shift_id","id");
}

控制器使用

return Grid::make(HzDailyPayroll::with(['userInfo','workerInfo']), function (Grid $grid) use ($cid) {
	$grid->filter(function (Grid\Filter $filter) use ($cid) {
	// 关联关系查询
           $filter->where('考勤状态',function($query){
                $query->whereHas('workerInfo',function($query){
                    $query->whereHas('shiftInfo',function($query){
                     
                       // $query->whereColumn('clockoff_time', '>', 'end_time');

                       if($this->input == 0){  // 正常
                           // 两个表联查,对比同一行数据  两个字段值的大小
                           $query->whereColumn('clockoff_time', '<', 'end_time')->orwhereColumn('clockoff_start_date', '<', 'start_time');
                       }else if($this->input == 1){  // 异常
                           $query->whereColumn('clockoff_time', '>', 'end_time')->orwhereColumn('clockoff_start_date', '>', 'start_time');
                       }
                     
                   });
               });
               // 需要当前行查到当前行的打卡规则,再比较打卡时间
           })->select(config('status.dapayStatus'))->width(3);

你可能感兴趣的:(laravel)