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

回到顶部