laravel多条件查询闭包写法
直接上代码
1: 比如我要查询 符合条件的 部门和 用户
DB::table("user")->where("user_id",20)->whereIn("d_id",[82,83])->get();
可以使用下面这种方法替换
$where = function ($query) {
$query->where("d_id", "=", "82");
}
DB::table("user")->where("user_id",20)->where($where)->get();
这种写法也支持多条件组合
$where = function ($query) {
$query->where("d_id", "=", "82")
->orWhere("d_id", "=", "83");
}
如果需要传入变量 就需要use一下
$field = "d_id";
$ids= [82,83,84];
$where = function ($query) use( $field , $ids ){
$query->whereIn( $field, $ids );
};
// sql查询 $middleResult = $this->clueMiddleInfoModel
->whereIn("join_level", [0,100,200]) // 活跃学员
->where(["status" => 1]);
// 添加首单时间筛选条件
if (!empty($param["single_time"])) {
$middleResult = $middleResult
->whereBetween("first_buy_time",[
date("Y-m-d 00:00:00", strtotime($param["single_time"][0])),
date("Y-m-d 23:59:59", strtotime($param["single_time"][1]))
]);
}
// 添加审核时间筛选条件
if (!empty($param["check_pyq_time"])) {
$middleResult = $middleResult
->whereBetween("check_pyq_time",[
date("Y-m-d 00:00:00", strtotime($param["check_pyq_time"][0])),
date("Y-m-d 23:59:59", strtotime($param["check_pyq_time"][1]))
]);
}
// 添加星标用户、是否发送朋友圈、是否上传朋友圈
if (!empty($where)) {
$middleResult = $middleResult->where($where);
}
// uids特殊条件过滤
if (!empty($uids)) {
$middleResult = $middleResult->whereIn("uid", $uids);
}
// sale_uid特殊条件过滤
if (!empty($param["xg_uids"])) {
$middleResult = $middleResult->where(function($middleResult) use($param){
$middleResult->whereIn("sale_uid", $param["xg_uids"])->orWhere(function($middleResult) use($param){
$middleResult->where("sale_status", CrmInviteClueMiddleInfoModel::SALE_STATUS_OFF)->whereIn("xg_uid", $param["xg_uids"]);
});
});
}
//是否禁用
if (!empty($param["is_cc_disabled"])) {
if (CrmInviteClueMiddleInfoModel::SALE_STATUS_ON == $param["is_cc_disabled"]) {
$middleResult = $middleResult->where("sale_status", CrmInviteClueMiddleInfoModel::SALE_STATUS_OFF);
} else {
$middleResult = $middleResult->where("sale_status", CrmInviteClueMiddleInfoModel::SALE_STATUS_ON);
}
}
if (!empty(trim($param["cc_name"]))) {
$middleResult = $middleResult->where("sale_name", "like", "%" . trim($param["cc_name"]) . "%");
}
// 总条数
$totalSize = $middleResult->count();
// 分页处理
$result = $middleResult
->offset(($param["current_page"] -1)*$param["limit"])
->limit($param["limit"])
->get();
以上是 laravel多条件查询闭包写法 的全部内容, 来源链接: utcz.com/z/513808.html