2015-12-15 84 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