2017-01-26 14 views
1

以下のクエリを使用してデータを取得しています。パラメータをwhere句に渡すと、パラメータは疑問符?に変換されます。クエリのWhere節でパラメータをlaravel 5に渡す際にエラーが発生しました

$productDatas = DB::table('products') 
         ->select('products.*','products.id as pid','product_features.*','product_features.id as pfid') 
         ->join('product_features','product_features.product_id','=','products.id') 
         ->join('categories','categories.id','=','products.cat_id','left'); 

if($value == 13) { 
    // $value = intval($value); 
    $productData = $productDatas->where('product_features.'.$field,'<',$value)->toSql(); 
    dd($productData); 
} else { 
    $productData = $productDatas->where('product_features.'.$field,'=',$value)->get(); 
} 

出力:

"select `products`.*, `products`.`id` as `pid`, `product_features`.*, `product_features`.`id` as `pfid` 
from `products` 
inner join `product_features` on `product_features`.`product_id` = `products`.`id` 
left join `categories` on `categories`.`id` = `products`.`cat_id` 
where `product_features`.`primary_camera` < ?" 
+2

問題は何ですか? –

+0

問題はデータベースから実際のデータを取得していません –

+0

'dd($ productData) 'は何をしていますか?あなたの 'else'ブロックでは' - > get() '関数を呼び出していますが、' if'ブロックではそうしていません。 – akousmata

答えて

0

?マークを心配しないでください。これは、ラーベルが、?の場所に動的に割り当てられた値があることを示す方法です。

対応するルートファイルを完全に表示するには、次のコードを置き、コードを実行します。

\DB::listen(function ($sql, $bindings, $time) { 
    dump($sql); 
    dump($time); 
    dump($bindings); 
}); 

これは?がある場所に置かれます$bindingsが何であるかを紹介します。また、クエリの実行に一覧表示できます$time

関連する問題