2017-09-24 63 views
0

我想測試MySQL中Laravel函數的輸出,爲此我需要將代碼翻譯成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

這不是辦法,但仍可以得到事半功倍的結果相同。

在查詢中犯一個小錯誤,例如使用刪除表名或列名的最後一個字符。然後它引發一個顯示查詢的錯誤。然後你可以很容易地在屏幕上獲得你的查詢。

在您的查詢中,使用product而不是products。這會導致查詢錯誤並顯示它。