我在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' =>'dealsVisibleController@index']);
当我尝试通过打印来调试查询时,我正在
"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变量。
任何建议。
答案 0 :(得分:2)
我很确定您的代码是正确的。 SQL输出函数toSql()
不显示变量的值,仅出于安全原因打印出?
。
答案 1 :(得分:1)
您可以使用
访问所有查询 $queries = DB::getQueryLog();
它还将查询参数打印为数组。
要获取最后一个查询:
dd(end($queries));
要禁用日志:
DB::connection()->disableQueryLog();
有关详细信息,请参阅docs。