如何使用Laravel Query Builder或Eloquent ORM在Laravel 3/4中检索原始执行的SQL查询?
例如,像这样:
DB::table('users')->where_status(1)->get();
Run Code Online (Sandbox Code Playgroud)
要么:
(posts (id, user_id, ...))
User::find(1)->posts->get();
Run Code Online (Sandbox Code Playgroud)
否则,至少我如何保存执行到laravel.log的所有查询?
我正在尝试查看查询的日志,但DB::getQueryLog()只是返回一个空数组:
$user = User::find(5);
print_r(DB::getQueryLog());
Run Code Online (Sandbox Code Playgroud)
结果
Array
(
)
Run Code Online (Sandbox Code Playgroud)
如何查看此查询的日志?
所以我有一个查询,在我的生产安装中需要在'where'方法中的"id"周围引用,否则不返回任何结果.在我的本地安装上,正好相反.如果我使用报价,它就不起作用了.
生产
'invoices' => Auth::user()->invoices->where('paid', "0")
本地主机
'invoices' => Auth::user()->invoices->where('paid', 0)
这真的很奇怪,每当我从github部署时,我都非常想进入并改变它.这是一个常见的问题吗?我似乎找不到任何关于它的东西.
我将列出一些Laravel查询日志:
在int周围进行本地安装(不工作)
Array (
[0] => Array (
[query] => select * from `users` where `users`.`id` = ? limit 1
[bindings] => Array (
[0] => 1
)
[time] => 10.49
)
[1] => Array (
[query] => select * from `invoices` where `invoices`.`user_id` = ? and `invoices`.`user_id` is not null
[bindings] => Array (
[0] => 1
)
[time] => 1.39
)
)
Run Code Online (Sandbox Code Playgroud)
在int(工作)周围没有引用的本地安装
Array (
[0] …Run Code Online (Sandbox Code Playgroud) 我对 Laravel 很陌生,不太了解DB::table与AND子句结合使用的方法。
所以我现在有这个查询:
$query = DB::select( DB::raw("SELECT * FROM tablethis WHERE id = '$result' AND type = 'like' ORDER BY 'created_at' ASC"));
Run Code Online (Sandbox Code Playgroud)
它正在工作,但我想使用 Laravel 的查询生成器来生成类似的内容:
$query = DB::table('tablethis')->where('id', '=', $result)->where('type', '=', 'like')->orderBy('created_at', 'desc')
Run Code Online (Sandbox Code Playgroud)
但这似乎where()完全忽略了第二个。那么,基本上我该如何进行这项工作?