В этой статье я расскажу как можно вывести в дебаг 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
ОтветитьУдалить