左边的参数绑定与Laravel Query Builder中的数组连接

时间:2013-12-31 22:46:22

标签: laravel laravel-4

我尝试在IN子句搜索的地方进行左连接。但我无法将数组绑定到查询。

 $query = DB::table('offers');
        $query->select('id', 'business_id', 'address_id', 'title', 'details', 'value', 'total_available', 'start_date', 'end_date', 'terms', 'type', 'coupon_code', 'is_barcode_available', 'is_exclusive', 'userinformations_id', 'is_used');
        $query->leftJoin('user_offer_collection', function ($join)
        {
            $join->on('user_offer_collection.offers_id', '=', 'offers.id');
            $join->on('user_offer_collection.user_id', 'IN', DB::Raw('?'));
        })->setBindings(array_merge($query->getBindings() , array(array(
            1,2,3
        ))));

1 个答案:

答案 0 :(得分:1)

如果使用查询构建器或雄辩的ORM,则不必绑定参数。但是,如果使用DB::raw(),请确保绑定参数。

尝试以下方法:

$array = array(1,2,3);

     $query = DB::table('offers');
            $query->select('id', 'business_id', 'address_id', 'title', 'details', 'value', 'total_available', 'start_date', 'end_date', 'terms', 'type', 'coupon_code', 'is_barcode_available', 'is_exclusive', 'userinformations_id', 'is_used');
            $query->leftJoin('user_offer_collection', function ($join) use ($array)
            {
                $join->on('user_offer_collection.offers_id', '=', 'offers.id')
                      ->whereIn('user_offer_collection.user_id', $array);
            });
      $query->get();