一、系统自带调试:
首先index.php开启调试模式:
// remove the following lines when in production mode defined('yii_debug') or define('yii_debug',true); // specify how many levels of call stack should be shown in each log message defined('yii_trace_level') or define('yii_trace_level',3); //app use time //defined('yii_begin_time') or define('yii_begin_time',microtime(true));
main.php页面:
'errorhandler'=>array( // use 'site/error' action to display errors 'erroraction'=>'site/error', ), 'log'=>array( 'class'=>'clogrouter', 'routes'=>array( array( 'class'=>'cfilelogroute', 'levels'=>'error, warning', ), // 下面显示页面日志 array( 'class'=>'cweblogroute', 'levels'=>'trace', //级别为trace 'categories'=>'system.db.*' //只显示关于数据库信息,包括数据库连接,数据库执行语句 ), ), ),
yii_trace_level的数字越大,信息越清楚
二、使用调试工具调试:
yii-debug-toolbar把包解压后 放到extensions里边 然后在配置文件main.php中最后加上
'log'=>array( 'class'=>'clogrouter', 'routes'=>array( array( 'class'=>'ext.yii-debug-toolbar.yiidebugtoolbarroute', 'ipfilters'=>array('127.0.0.1','192.168.1.215'), ), ), ),
没有出现的话加上在'components'下的db里加上两个属性,
'enableprofiling'=>true, 'enableparamlogging'=>true,
然后如果有其他调试工具的插件的话,可能会出现冲突导致sql语句不出来,把那段代码注掉即可。
(急)yii sql查询出的结果数组转换成ar模式
除了cactivedataprovider,你还可以使用carraydataprovider
我给你写个例子:
controller中:
$rawdata = yii::app()->db->createcommand('select * from {{post}} where idqueryall();
$data = new carraydataprovider($rawdata, array(
'id' => 'user',
'sort' => array(
'attributes' => array(
'id', 'title', 'content'
),
),
'pagination' => array(
'pagesize' => 10,
),
));
$this->render('gridview_array', array('dataprovider' => $data));
然后view中:
$this->widget('zii.widgets.grid.cgridview', array(
'id'=>'somegrid',
'dataprovider'=>$dataprovider,
'columns'=>array(
'id',
'title',
'content',
),
));
这样就ok 了~
sql函数怎调试
就是一个一个实验了, 看看哪个结果返回的是你要的。这种自解释的语言没有什么所谓的调试方法。一条命令就搞定的,你认为怎么算是调试呢
http://www.bkjia.com/phpjc/840746.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/840746.htmltecharticleyii调试sql的常用方法,yii调试sql yii调试sql主要有以下方法: 一、系统自带调试: 首先index.php开启调试模式: // remove the following lines when...
