2017-09-24 2 views
0

私はLaravel関数の出力をMySQLでテストしたいと思います。このためには、コードをSQLリクエストに変換する必要があります。Laravel関数をテストするSQLリクエストに変換する

機能:

return DB::table('products') 
     ->leftJoin('product_locations', 'products.id', '=', 'product_locations.productId') 
     ->select(DB::raw('IF(product_locations.id is not null,concat(product_locations.id,"-","M"),concat(products.id,"-","N")) as id'), DB::raw('IF(product_locations.id is not null,1,0) as multilocation'), 'products.productName', 'products.productName as text', 'product_locations.productLocationName', 'product_locations.binLocationName', 'product_locations.unitCost', 'product_locations.amount') 
     ->orderBy('products.productName') 
     ->distinct() 
     ->get(); 

答えて

2

使用クエリーログ:

DB::connection()->enableQueryLog(); 

DB::table('products') 
     ->leftJoin('product_locations', 'products.id', '=', 'product_locations.productId') 
     ->select(DB::raw('IF(product_locations.id is not null,concat(product_locations.id,"-","M"),concat(products.id,"-","N")) as id'), DB::raw('IF(product_locations.id is not null,1,0) as multilocation'), 'products.productName', 'products.productName as text', 'product_locations.productLocationName', 'product_locations.binLocationName', 'product_locations.unitCost', 'product_locations.amount') 
     ->orderBy('products.productName') 
     ->distinct() 
     ->get(); 

dd(DB::getQueryLog()) 
+0

ありがとう、私は指定したとおりにクエリログを使用しようとしましたが、 "chromの開発者ツール"の結果は表示されません – allam

+0

これは実行されたクエリを画面に表示します。 –

0

それは仕方ないですが、まだあなたがより少ない労力で同じ結果を得ることができます。

たとえば、テーブル名または列名の最後の文字を削除するなどのクエリを間違えてください。その後、クエリを示すエラーが発生します。その後、画面上で簡単にクエリを取得することができます。

productsの代わりにproductを使用します。これにより、クエリでエラーが発生し、表示されます。

関連する問題