Как посмотреть sql запрос yii2

Аватар пользователя Maksim Litvinov
Maksim Litvinov
20 ноября 2024

В Yii2 существует несколько способов посмотреть SQL запросы, которые генерируются фреймворком. Вот несколько способов:

  1. Вывод SQL запроса в логах Yii2

    Вы можете настроить Yii2 таким образом, чтобы он записывал SQL запросы в логи. Для этого в файле конфигурации вашего приложения (обычно config/main.php или config/db.php) добавьте следующий код:

    return [
            // другие настройки
            'components' => [
                'db' => [
                    'class' => 'yii\db\Connection',
                    'dsn' => 'mysql:host=localhost;dbname=mydatabase',
                    'username' => 'root',
                    'password' => '',
                    'charset' => 'utf8',
                    'enableSchemaCache' => true,
                    'enableQueryCache' => true,
                    'queryCacheDuration' => 3600,
                    'schemaCacheDuration' => 3600,
                    'enableLogging' => true, // Включаем логирование SQL запросов
                ],
            ],
        ];
    
  2. Использование дебаггера Yii2:

    Yii2 поставляется с встроенным дебаггером, который позволяет просматривать выполненные SQL запросы на странице. Для этого включите дебаггер в файле конфигурации, добавив следующий код:

    return [
        // другие настройки
        'modules' => [
            'debug' => [
                'class' => 'yii\debug\Module',
            ],
        ],
    ];
    

После этого, откройте URL http://yourapp.com/index.php?r=debug для просмотра выполняемых SQL запросов.

  1. Использование ActiveRecord

    Если вы используете ActiveRecord в Yii2, вы можете использовать метод getRawSql() для просмотра сгенерированного SQL запроса. Например:

    <?php
    $query = \app\models\Post::find()
        ->where(['status' => 1])
        ->andWhere(['>', 'created_at', time() - 3600])
        ->orderBy('created_at DESC')
        ->limit(10);
    
    echo $query->createCommand()->getRawSql();
    
1 0
Познакомьтесь с основами SQL бесплатно