折腾了很纠结...
$map = array(); //获取公司cid $map['Staff_salary.cid'] = $params['cid']; $status = trim($request->post('status')); if(!empty($status)){ $map['Staff_salary.status'] = $status; } $deptid = trim($request->post('deptid')); //部门 if (!empty($deptid)) { $map['Staff_salary.deptid'] = $deptid; } $postid = trim($request->post('postid')); //岗位 if (!empty($postid)) { $map['Staff_salary.postid'] = $postid; } //入职的区间查询 就是说在此期间的日期入职就行 $startime = trim($request->post('startime')); $endtime = trim($request->post('endtime')); if ($startime && $endtime) { $map['Staff_salary.start_time'] = ['between', [$startime, $endtime]]; }elseif($startime){ $map['Staff_salary.start_time'] = ['egt', $startime]; }elseif($endtime){ $map['Staff_salary.start_time'] = ['elt', $endtime]; } $likedata = trim($request->post('search_val')); //员工姓名,工号,手机号 if (!empty($likedata)) { //$map['Staff.zname|Staff.staff_num|Staff.mobile|Staff.zpinyin|Staff.zpy'] = ['like', '%'.$likedata.'%']; //封装模糊查询 赋值到数组 $map['Staff.zname|Staff.staff_num|Staff.mobile|Staff.zpinyin|Staff.zpy'] = ['like', '%'.$likedata.'%']; } $said = trim($request->post('said')); if(!empty($said)){ $map['said'] = $said; } $rel = db::view('Staff_salary','*') ->view('Company_dept','deptid,deptname','Company_dept.deptid = Staff_salary.deptid','LEFT') ->view('Company_postion','postid,postname','Company_postion.postid = Staff_salary.postid','LEFT') ->view('Staff','sid,zname,staff_num,zpinyin,zpy','Staff.sid =Staff_salary.sid','LEFT') ->where($map) ->paginate(10, false, ['type' => 'Ajaxbootstrap']);
默认的视图查询 用的inner方式 所以不需要查询条件不需要指定条件,但是用LEFT 和 RIGHT 就需要了....