moledet/database-change-log

一个PHP类,用于记录从原始SQL或PDO语句中更改的表数据

v1.0.2 2024-06-14 10:39 UTC

This package is auto-updated.

Last update: 2024-09-14 11:31:36 UTC


README

DatabaseChangeLog类帮助记录所有更新、删除、插入SQL查询到数据表data_change_log。该类通过在代码中添加一个字符串来解析原始SQL或PDO查询。日志将保存数据更改以及userID、ip、userAgent和系统(可配置)。
需要记录日志的表和列可能由每个动作(更新、删除、插入)进行配置。

安装

###从Git下载 下载
###克隆

git clone https://github.com/moledet/database-change-log.git Log

###Composer

php composer.phar require moledet/database-change-log

或者在您的composer.json中添加,请参阅文档

 {
     "repositories": [
         {
             "url": "https://github.com/moledet/database-change-log",
             "type": "vcs"
         }
     ],
     "require": {
         "moledet/database-change-log": "dev-master"
     }
 }

###依赖 此类依赖于PHP-SQL-Parser

用法

###配置 您必须配置数据库连接。

 $config = array(
    'database'=>'mysql',
    'host'=>'localhost',
    'port'=>3306,
    'dbname'=>'test',
    'charset'=>'utf8',
    'user'=>'admin',
    'password'=>'secret'
 );

       
 DatabaseChangeLog::getInstance()->setConnection($config);

可以配置当前用户ID(默认0)、系统名称(默认CRM)或需要记录的列表(表、列、动作)。如果不配置表列表,则所有表的变化都将被记录。

DatabaseChangeLog::getInstance()->setUserId(7);
DatabaseChangeLog::getInstance()->setSystemName('API');

$config = [
                    'user'=>[
                        'insert'=>['login','name','password']
                        'delete'=>'all',
                        'update'=>['login','name']
                     ],
                     'customers'=>'all',
           ];
           
DatabaseChangeLog::getInstance()->setLogTablesConfig($config);                 

###如何使用 需要在运行之前调用日志SQL。您可以在查询之前覆盖框架或ORM连接来运行它。

 $sql = "UPDATE user SET password='secret' WHERE id=7;";
 DatabaseChangeLog::getInstance()->log($sql);
 
 $framework->getConnection()->runSQL($sql);

或PDO

 $query = 'UPDATE users SET bonus = bonus + ? WHERE id = ?';
 $stmt = $pdo->prepare($query);
 foreach ($data as $id => $bonus)
 {
    DatabaseChangeLog::getInstance()->log($query,[$bonus,$id]);
    $stmt->execute([$bonus,$id]);
 }

###结果 在数据表data_change_log中将保存更改的日志。