您可以在应用程序日志中记录执行的查询并查看它。配置文件中有这样的东西:
'components' => array(
'db'=>array(
'enableParamLogging' => true,
),
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'trace,log',
'categories' => 'system.db.CDbCommand',
'logFile' => 'db.log',
),
),
),
);
在某些情况下(例如在运行测试时),您还需要Yii::app()->log->processLogs(null);
在进程结束时调用它才能工作。
当然,一旦你在那里,没有什么能阻止你编写自己的日志路由,它对记录的消息做一些不同的事情,但请注意日志是在请求结束时(或当你调用时processLogs
)处理的,而不是每次你记录一些东西。
顺便说一句,您不应该在查询中使用动态输入来构建这样的查询。改用绑定变量:
$criteria = new CDbCriteria();
$criteria->condition = 't.date BETWEEN :from_date AND :to_date';
$criteria->params = array(
':from_date' => $from_date,
':to_date' => $to_date,
);
$criteria->with = array('order');
$orders = ProductOrder::model()->findAll($criteria);