2016-12-18 53 views
0
$datas=Elan::orderBy('created_at','desc')->where('status', 1)->take(4)->toSql();  
     dd($datas); 

我在「laravel 5.2」中寫了查詢。我展示它作爲SQL查詢與功能toSql() ,結果是:laravel return'?'而不是'WHERE子句中的'1'

"select * from `els` where `status` = ? order by `created_at` desc limit 4" 

你可以看到有?標記。這就是爲什麼我的查詢不起作用。爲什麼它會回報我?而不是一個。我也嘗試過這樣'1'的結果。

+0

它沒有返回?,?是價值的佔位符。只需將雄辯查詢寫爲'$ datas = Elan :: where('status',1) - > orderBy('created_at','desc') - > take(4) - > get();' – karmendra

+0

這就是toSql()的預期行爲。如果你需要查看完整的sql檢查mysql查詢日誌。 – astroanu

回答

0

?用於參數綁定其防止針對SQL注入。

如果你想看到它與參數值執行的原始SQL查詢,試試下面的代碼:

DB::enableQueryLog(); 
$datas=Elan::orderBy('created_at','desc')->where('status', 1)->take(4)->get(); 
dd(DB::getQueryLog()); 

希望這有助於!