我正在尝试查看查询的日志,但DB::getQueryLog()只是返回一个空数组:
$user = User::find(5);
print_r(DB::getQueryLog());
Run Code Online (Sandbox Code Playgroud)
结果
Array
(
)
Run Code Online (Sandbox Code Playgroud)
如何查看此查询的日志?
在PHP中,当使用带有参数化查询的PDO访问MySQL数据库时,如何检查最终查询(在替换所有令牌之后)?
有没有办法检查数据库真正执行的是什么?
Laravel中是否有类似的东西可以让你看到正在执行的实际SQL?例如,在Rails中,您可以在控制台中看到SQL.在Django你有一个工具栏.
在Laravel 4中有类似的东西吗?
澄清一下:我的问题是如何在没有代码的情况下做到这一点.是否有内置在Laravel中的东西不需要我在应用程序中编写代码?
更新:我希望看到CLI查询(例如php artisan migrate)
我正在尝试调试我在测试套件中进行的一些SQL查询.使用以下调试代码:
\Log::debug(User::first()->jobs()->toSql());
Run Code Online (Sandbox Code Playgroud)
打印出来的SQL是:
`select * from `jobs` where `jobs`.`deleted_at` is null and `jobs`.`managed_by_id` = ? and `jobs`.`managed_by_id` is not null`
Run Code Online (Sandbox Code Playgroud)
在那里做那个问号是什么?我已经测试了查询,它按预期工作.是因为我正在选择第一个()用户发生这种情况吗?
我试图弄清楚如何获取原始的SQL查询,包括其中的绑定数据。香港专业教育学院得到的是:
\DB::connection()->enableQueryLog();
$query = \DB::getQueryLog();
$lastQuery = end($query);
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
array(3) {
["query"]=>
string(57) "select * from `table_1` where `field_1` = ? limit 1"
["bindings"]=>
array(1) {
[0]=>
string(34) "xyz"
}
}
Run Code Online (Sandbox Code Playgroud)
那么,如何获得像这样的完整SQL查询的转储(老式的好方法)?
select * from `table_1` where `field_1` = 'xyz' limit 1
Run Code Online (Sandbox Code Playgroud)
谢谢
我一直试图找出一种方法来记录我在Zend Framework 1中使用的Eloquent ORM的SQL查询.我遇到了以这种方式调用的getQueryLog()方法:
$queries = DB::getQueryLog();
Run Code Online (Sandbox Code Playgroud)
我发现Illuminate\Database\Connection包含getQueryLog()方法,所以我尝试执行以下操作:
use Illuminate\Database\Connection as DB;
class IndexController
{
.
.
.
public function indexAction()
{
// do stuff (e.g. fetch/update/create rows)
$questions = Questions::all()
.
.
$queries = DB::getQueryLog();
var_dump($queries); exit;
.
// render view
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我得到以下通知,它返回NULL: Notice: Undefined property: IndexController::$queryLog in /var/www/qasystem/vendor/illuminate/database/Illuminate/Database/Connection.php on line 918
NULL
有人可以建议我如何在Laravel之外使用它吗?我在网上搜索过,看不到我需要做的任何事情,尽管我怀疑大多数例子都会在Laravel中使用.另外,Illuminate\Database\Connection是正确的类吗?谢谢
我有一个代码:
$update= DB::table('Appraiser_commands')->where('cycle_id', $cycleid)->where('user_id',$userId)->update(['mode' => $mode,'Appraiser_commnd'=>$json])->toSql();
echo $update;exit;
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用toSql()将laravel查询转换为mysql
但是我有一个错误
在整数上调用成员函数toSql()
然后我尝试
DB::table('Appraiser_commands')->where('cycle_id', $cycleid)->where('user_id',$userId)->update(['mode' => $mode,'Appraiser_commnd'=>$json])
DB::enableQueryLog();
$queries = DB::getQueryLog();
dd(end($queries));
Run Code Online (Sandbox Code Playgroud)
但是它返回的输出为'false'我没有得到预期的输出。我不知道为什么会这样,任何帮助将不胜感激。
预期的输出:
UPDATE table_name
SET Appraiser_commnd=value, mode=value2,...
WHERE cycle_id=some_value
Run Code Online (Sandbox Code Playgroud)