需求:
状态 (audit_status)到期时间(end_time1,end_time2) | 模糊查询(姓名,手机号,编号) |
---|
传入的数据
api_token:api_token
search:凯
audit_status:1
end_time1:2021-12-29 17:33:26
end_time2:2021-12-31 23:33:26
page:2
limit:10
控制器
public function getVehicleList(){
$param=$this->input;
#所有需要查询的字段
$timearr=["end_time1","end_time2","search","audit_status"];
foreach ($timearr as $v){
if (isset($this->input[$v])){
#如果时间存在无效时,返回错误信息
if (strstr($this->input[$v],'Invalid date')){
return $this->responseData([],"请请输入有效时间");
}
}
#如果前端没有传入字段信息,给他一个空值
$param[$v]=isset($this->input[$v]) ? $this->input[$v] : "";
}
#进入service方法
$data=$this->GarageManageService->getVehicleList($param);
if (!$data){
return $this->responseData();
}
return $this->responseData($data);
}
service
public function getVehicleList($param)
{
#print_r($param);
$field = ['*'];
#使用model
return CarManageCars::query()
#在where 使用闭包方法查询 模糊查询(姓名,手机号,编号)
->where(function ($query) use ($param) {
if ($param["search"]) {
#查询编号
$query->where('car_no', $param["search"])
#orwhereHas ->使用关联其他模型实现不同字段的模糊搜索,user :关联的user 模型
->orwhereHas('user', function ($query) use ($param) {
#查询手机号和名字
$query->where('realname', 'like', '%' . $param['search'] . '%')
->orwhere('phone', 'like', '%' . $param['search'] . '%');
});
}
})
->where(function ($query) use ($param) {
#查询状态
if ($param['audit_status']) {
$query->orwhere('audit_status', $param['audit_status']);
}
})
#通过区间时间查询
->where(function ($query) use ($param) {
if ($param['end_time1'] && $param['end_time2']) {
# orwhereBetween('数据库字段',['开始时间','结束时间'])
$query->orwhereBetween('expire_time', [$param['end_time1'], $param['end_time2']]);
}
})
#排序方式
->orderBy('audit_status', 'asc')
->with(["user" => function ($query) {
$query->select('id', 'realname', 'phone')->with('userHouses:user_id,gate_number,building_name');
}])
#laraver 自动进行分页
->paginate($this->limit, $field, 'page', $this->page)
->toArray();
}