# 数据库事件

数据库类包含一些 事件，你可以利用这些事件来了解数据库执行过程中的详细情况。这些事件可用于收集数据分析和生成报告。调试工具栏 就是利用这些事件来收集查询信息并显示在工具栏中。

## 事件

### DBQuery

每当执行一个新查询（无论成功与否）时，都会触发此事件。该事件唯一的参数是当前查询的 Query 实例。

你可以利用此事件将所有查询输出到 STDOUT，或记录到文件中，甚至创建工具进行自动查询分析，以帮助你发现可能缺少的索引、慢查询等问题。

记录所有查询的示例：

    <?php

    // In app/Config/Events.php

    namespace Config;

    use CodeIgniter\Events\Events;
    use CodeIgniter\Exceptions\FrameworkException;
    use CodeIgniter\HotReloader\HotReloader;

    // ...

    Events::on(
        'DBQuery',
        static function (\CodeIgniter\Database\Query $query) {
            log_message('info', (string) $query);
        },
    );