在CodeIgniter中,我会这样做:
print_r ($this->db->queries);
在Yii中我尝试过:
print_r (Yii::app()->db)
但这并没有显示任何疑问。
更新:
我理解我的问题:当我想在POST
动作上显示数据库查询时,我没有显示它。使用GET
时,没关系。
答案 0 :(得分:4)
正如@ bool.dev所说,您可以使用CWebLogRoute
,或者在我的情况下,我使用CFileLogRoute
将这些查询存储在文件中。
array(
'class'=>'CFileLogRoute',
'categories'=>'system.db.*',
'logFile'=>'sql.log',
),
答案 1 :(得分:0)
要补充@ snippLeaf-com的答案,您可以按照您想要的关键字跟踪此文件过滤:
// filter by "INSERT" or "UPDATE"
$ tail -f /path_to/protected/runtime/sql.log |grep 'INSERT\|UPDATE'
// filter (case insensitive) by "SELECT" in table "x2_users"
$ tail -f /path_to/protected/runtime/sql.log |grep -i SELECT.*x2_users
OBS:要获取新数据,您可能需要刷新数据库缓存:
rm -f protected/runtime/cache/*.bin
答案 2 :(得分:0)
如果您确实希望每个查询登录 yii ,请使用yii db profiler扩展名。
第1步。从-> link
下载扩展程序 第二步。解压到protected/extensions/
第3步。将文件夹名称yii-db-profiler-master
重命名为db_profiler
第4步。将以下内容更新为您的protected/config/main.php
:
<?php
return array(
// …
'components' => array(
// …
'db' => array(
// …
'enableProfiling'=>true,
'enableParamLogging' => true,
),
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
// …
array(
'class'=>'ext.db_profiler.DbProfileLogRoute',
'countLimit' => 1, // How many times the same query should be executed to be considered inefficient
'slowQueryMin' => 0.01, // Minimum time for the query to be slow
),
),
),
),
);