В этой статье я расскажу как можно вывести в дебаг SQL которые генерит фреймворк Yii.
Все изменения будут производится в главном конфиге, который находиться тут: /protected/config/main.php
Найдем в нем строчку
Все изменения будут производится в главном конфиге, который находиться тут: /protected/config/main.php
Найдем в нем строчку
'components' => array(Наша основная задача - настроить компонент логирования и компонет работы с БД, укажем параметры компоненту log и допишем параметры компоненту db:
'components' => array(
'db' => array(
...,
'enableProfiling' => true,
'enableParamLogging' => true
),
'log' => array(
'class' => 'CLogRouter',
'routes' => array(
'db' => array(
'class' => 'CWebLogRoute',
'categories' => 'system.db.CDbCommand',
'showInFireBug' => true //Показывать в FireBug или внизу каждой страницы
)
),
...
)
Теперь в любом месте кода, например в каком-то контроллере нужно указать какой блок кода профилировать. В следующем примере выведутся те запросы которые генерит фреймворк для кода замкнутого в блок профилирования: Yii::beginProfile('blockId');
$users = Users::model()->findAll("id>2");
Yii::endProfile('blockId');
Не забудьте в index.php зарегистрировать дебаг режим
ОтветитьУдалитьdefined('YII_DEBUG') or define('YII_DEBUG',true);
до вызова Yii::createWebApplication
Добавлю - сегодня искал, как включить дебаг только для определенных IP\Cookie.
ОтветитьУдалитьПришлось свое писать - http://brainfucklab.blogspot.com/2012/11/php-yii-cweblogrouter-cookie-ip.html (не пиара ради).
По SQL Бояров крутые уроки даёт - https://www.youtube.com/playlist?list=PLvItDmb0sZw_NDm3pDMQ4_9bV_zKzBmNv
ОтветитьУдалить