Laravel, в котором метод в Eloquent не работает

#php #laravel #laravel-5 #laravel-7

#php #laravel #laravel-5 #laravel-7

Вопрос:

Я хочу использовать метод Where в Eloquent, но теперь он работает как приведенная ниже функция.

 <?php 
  $product = DB::table('product')
                   ->join('supplier','supp_code','=','prod_supplier_code')
                   ->select('product.*','supplier.supp_margin')
                   ->where('prod_seo_title','=',$id)
                   ->first();

  $decArr = explode(',',$product->prod_decoration_type);

        for($i=0; $i<count($decArr); $i  )
        {
            if($i==0)
            $inString = "'".$decArr[$i]."','";
            elseif ($i<(count($decArr))-1)
            $inString .= $decArr[$i]."','";
            else
            $inString .= $decArr[$i]."'";
        }

        $proDeco = DB::table('decoration')->whereIn('deco_print_type', [$inString])->get();
?>
 

Но в запросе он отображается следующим образом.

 select * from `decoration` where `deco_print_type` in (''100109C9','100110B9','100144C9','100186C9'');
 

Я не могу понять, почему появляются эти косые черты. Пожалуйста, помогите мне исправить эту проблему.

Ответ №1:

whereIn() Метод будет принимать массив всех элементов. В вашем примере вы передаете массив с одним элементом, все значения которого уже объединены. Основываясь на вашем примере, вам нужно только передать $decArr

 DB::table('decoration')->whereIn('deco_print_type', $decArr)->get();