Lavarel bind参数丢失

本文记录了一次在项目中使用bind时遇到的参数丢失情况。通过调整代码逻辑,在SQL查询中正确添加并使用了所需的bind参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中一次使用bind时,遇到bind参数丢失的情况,这种记录一下。


$params = array_merge($this->default_params, $params);
        $prefix = DB::getTablePrefix();
        $sql = DB::table('order')->whereRaw("periods_id = {$prefix}periods.id and user_id = {$prefix}periods.user_id")->select([DB::raw('SUM(pg_order.num)')])->toSql();
        $sql2 = DB::table('order')->selectRaw("SUM(num) as num,periods_id,max(create_at)as create_at,MAX(user_id)as user_id")->where('order.user_id', '=', $this->user->id)->groupBy('periods_id')
            ->orderBy("create_at", 'desc')->forPage($params['page'], $params['page_size'])
            ->toSql();
        $order = DB::table(DB::raw("({$sql2}) as pg_f"))->addBinding($this->user->id) //添加bind参数
            ->leftJoin('periods', 'f.periods_id', '=', 'periods.id')
            ->leftJoin('goods', 'periods.goods_id', '=', 'goods.id')
            ->leftJoin('user', 'periods.user_id', '=', 'user.id')
//            ->whereIn('periods.status', $params['status_list'])
            ->select([
                'f.num',
                'f.periods_id',
                'user.nickname',
                'periods.create_at',
                'periods.lucky_code',
                'periods.goods_id',
                'periods.user_id',
                'periods.periods',
                'periods.buy',
                'periods.total',
                'periods.lottery_at',
                'periods.lottery_show_at',
                'periods.status',
                'goods.title',
                'goods.icon',
                DB::raw("({$sql}) as num2")])
        // $d = DB::table('order')->getBindings(); //查看bind参数
            ->get();

$sql2中bind 的$this->user->id参数在获取$order时获取不到。即getBindings时返回为空。addBinding添加一个新的bind参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值