我認爲這是一個簡單的問題,但我無法解決。Laravel - 獲取未經執行的原始查詢這一個
如何獲得一個Eloquent查詢的原始查詢而不執行這一個。
例子:
$rawQuery = getRawQuery(Product::where('is_sold', '=', 1)->get()); // or something like that
echo $rawQuery; // select * from `product` where `product`.`is_sold` = 1
我認爲這是一個簡單的問題,但我無法解決。Laravel - 獲取未經執行的原始查詢這一個
如何獲得一個Eloquent查詢的原始查詢而不執行這一個。
例子:
$rawQuery = getRawQuery(Product::where('is_sold', '=', 1)->get()); // or something like that
echo $rawQuery; // select * from `product` where `product`.`is_sold` = 1
我認爲你需要這樣的:
$rawQuery = Product::where('is_sold', '=', 1)->toSql();
爲了讓您的綁定,你可以這樣做:
var_dump(Product::where('is_sold', '=', 1)->getBindings());
謝謝。這是我需要的。 –
哦,不!我得到的結果是:select * from'product',其中'product'.'is_sold' =? 如何獲取傳遞給此查詢的值? (也許這是array(1)。) –
是的,綁定從查詢中分離出來,只是經過編輯,告訴你如何。 –
如果你想在最後查詢你運行它然後你可以使用:
Product::where('is_sold', '=', 1)->get();
// Get the last query
$q = DB::getQueryLog();
print_r(end($q)); // or dd(end($q));
你會得到這樣的事情:
Array (
[query] => select * from `products` where `is_sold` = ?
[bindings] => Array ([0] => 1) [time] => 0.38)
另外,如果要記錄您所有的疑問,那麼你可以使用illuminate.query
事件:
Event::listen('illuminate.query', function($query, $bindings, $time, $name)
{
// use Log class to log queries
});
或者,你可以使用clockwork (Chrome擴展程序)查看您的Chrome控制檯中的所有查詢詳細信息,這非常有用,您可以將它配置爲Laravel
,文檔中的詳細信息,但也有其他PHP/Laravel
可供使用的程序包。
它已經打印出原始查詢,因爲它應該是。這不是你想要的嗎?請澄清。 –