我认为这是一个简单的问题,但我无法解决。
如何在不执行此查询的情况下获取Eloquent查询的原始查询。
示例:
$rawQuery = getRawQuery(Product::where('is_sold', '=', 1)->get()); // or something like that
echo $rawQuery; // select * from `product` where `product`.`is_sold` = 1
答案 0 :(得分:1)
我认为你需要这个:
$rawQuery = Product::where('is_sold', '=', 1)->toSql();
要获得绑定,您可以这样做:
var_dump(Product::where('is_sold', '=', 1)->getBindings());
答案 1 :(得分:0)
如果您想在运行之后获取最后一个查询,那么您可以使用:
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
个包。