2015-12-15 91 views
0

我在Laravel遇到一個奇怪的問題。控制器變量不顯示在查詢生成器中Laravel

下面是我的一個控制器中的索引函數。

public function index($merchant_url_text) 
{ 
    // 
    $deals = DB::table('tbl_deal') 
      -> join ('tbl_merchant', 'tbl_deal.merchant_id', '=', 'tbl_merchant.merchant_id') 
      -> where ('merchant_url_text', $merchant_url_text) -> toSql(); 
    //return $merchant_url_text.$deal_id; 
      dd($deals); 
      //return $merchant_url_text; 
} 

正如你所看到的,我正從路由傳遞merchant_url_text。

Route::get('/testroute/{merchant_url_text}', ['uses' =>'[email protected]']); 

當我試圖通過在打印調試查詢,我得到

"select * from `tbl_deal` inner join `tbl_merchant` on `tbl_deal`.`merchant_id` = `tbl_merchant`.`merchant_id` where `merchant_url_text` = ?" 

這意味着,查詢生成器不讀$ merchant_url_text變量。但是,當我只返回該變量時,它正在被打印。

只是無法弄清楚爲什麼查詢構建器在索引函數中可用時無法在查詢中包含$ merchant_url_text變量。

有任何建議。

回答

2

我很確定你的代碼是正確的。 SQL輸出函數toSql()不顯示變量的值,並且出於安全原因僅打印出?

+0

謝謝。你是對的。對於不顯示數據的角度視圖有一些問題。該查詢雖然工作。 –

1

您可以通過使用

$queries = DB::getQueryLog();

它也打印查詢參數數組訪問您所有的疑問。

得到最後的查詢:

dd(end($queries));

要禁用日誌:

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

進一步信息,請參見docs