laravel 多条件查询

16 篇文章 1 订阅

 

DB用法:
$list = DB::table($this->table)
->join('user', 'user.id', '=', $this->table . '.user_id')
->where(function($query) use($data) {
    if (!empty($data['order_sn'])) {
        $query->where($this->table . '.order_sn', 'like', '%' . $data['order_sn'] . '%');
    }
})
->where(function($query) use($data) {
    if (isset($data['order_status']) && is_numeric($data['order_status'])) {
        $query->where($this->table . '.order_status', '=', $data['order_status']);
    }
})
->where(function($query) use($data) {
    if (isset($data['ship_status']) && is_numeric($data['ship_status'])) {
        $query->where($this->table . '.ship_status', '=', $data['ship_status']);
    }
})
->where(function($query) use($data) {
    if (isset($data['pay_status']) && is_numeric($data['pay_status'])) {
        $query->where($this->table . '.pay_status', '=', $data['pay_status']);
    }
})
->where(function($query) use($data) {
    if (!empty($data['start_time']) && !empty($data['end_time'])) {
        $query->where($this->table . '.update_time', '>=', $data['start_time'])
    ->where($this->table . '.update_time', '<=', $data['end_time']);
    } else if (!empty($data['start_time'])) {
        $query->where($this->table . '.update_time', '>=', $data['start_time']);
    } else if (!empty($data['end_time'])) {
        $query->where($this->table . '.update_time', '<=', $data['end_time']);
    }
})
->where($this->table . '.drugstore_id', '=', 0)
->where($this->table . '.user_id', '!=', 0)
->select($this->table . '.id as id', 
    $this->table . '.order_sn as order_sn', 
    $this->table . '.order_status as order_status', 
    $this->table . '.ship_status as ship_status', 
    $this->table . '.pay_status as pay_status', 
    $this->table . '.total_paid as total_paid', 
    $this->table . '.update_time as update_time', 
    'user.nickname as name', 
    'user.mobile as phone', 
    $this->table . '.is_remittance as is_remittance')
->orderBy($sortby, $sortvalue)
->take($data['pageSize'])
->skip($data['pageNo'] > 1 ? ($data['pageNo'] - 1) * $data['pageSize'] : 0)
->get();

 


Eloquent用法
 $requests = $requests;
            $orders = Order::select()->with('has_orderitems')->where('status','>=',config('payment.ORDER_STATE_PAY'))->where(function($query) use($requests) {
                if (isset($requests['school_name']) && $requests['school_name']) {
                    $query->where('sid', '=', $requests['school_name']);
                }
            })->where(function($query) use($requests) {
                if (isset($requests['dorm_name']) && $requests['dorm_name']) {
                    $query->whereIn('did', $requests['dorm_name']);
                }
            })->where(function($query) use($requests) {
                if (!empty($requests['date_time_start']) && !empty($requests['date_time_end'])) {
                    $query->where('created_at', '>=', $requests['date_time_start'])
                ->where( 'created_at', '<=', $requests['date_time_start']);
                } else if (!empty($data['date_time_start'])) {
                    $query->where('created_at', '>=', $requests['date_time_start']);
                } else if (!empty($data['date_time_end'])) {
                    $query->where('created_at', '<=', $requests['date_time_start']);
                }
            })->get(); 

附:use, php5.3以后的一个新鲜的家伙...  使用场景:闭包的内部函数使用外部函数中定义的变量.    用use来使用闭包外部定义的变量的.


原文:https://blog.csdn.net/sqc157400661/article/details/73850306 
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值