国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

生成可讀的操作日志

v3.0.7 版本
2023-12-22 版本更新時間
5058 安裝
31 star

簡介

支持 Laravel 的 ORM 、Hyperf 的 ORM 與 ThinkPHP 的 ORM 。
可以生成增、刪、改,包括批量增、刪、改,以及 使用 DB 操作的日志。

安裝

composer require chance-fyi/operation-log

使用 Laravel 的 ORM

首先在數(shù)據(jù)庫的配置文件 config/database.php 中增加兩個配置項 modelNamespacelogKey。

<?php

return [
    'default' => env('DB_CONNECTION', 'mysql'),
    ...
    'connections' => [
        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            ...
            ...
            // 模型所在的命名空間
            "modelNamespace" => "Chance\Log\Test\model",
            // 日志記錄的主鍵
            "logKey" => "id",
        ],
        ...
    ]
    ...
];

然后注冊 MySQL 數(shù)據(jù)庫連接的解析器。

\Illuminate\Database\Connection::resolverFor('mysql', function ($connection, $database, $prefix, $config) {
    return new \Chance\Log\orm\illuminate\MySqlConnection($connection, $database, $prefix, $config);
});

使用 ThinkPHP 的 ORM

在數(shù)據(jù)庫的配置文件 config/database.php 中增加三個配置項 query、modelNamespacelogKey,并修改 typebuilder。

<?php

return [
    'default'         => env('database.driver', 'mysql'),
    ...
    'connections'     => [
        'mysql' => [
            // 服務(wù)器地址
            'hostname'        => env('database.hostname', '127.0.0.1'),
            // 數(shù)據(jù)庫名
            'database'        => env('database.database', ''),
            // 用戶名
            'username'        => env('database.username', 'root'),
            // 密碼
            'password'        => env('database.password', ''),
            // 端口
            'hostport'        => env('database.hostport', '3306'),
            ...
            ...
            // 數(shù)據(jù)庫類型
            'type'            => \Chance\Log\orm\think\MySqlConnection::class,
            // 指定查詢對象
            "query"           => \Chance\Log\orm\think\Query::class,
            // Builder類
            "builder"         => \think\db\builder\Mysql::class,
            // 模型所在的命名空間
            "modelNamespace"  => "Chance\Log\Test\model",
            // 日志記錄的主鍵
            "logKey"          => "id",
        ],
        // 更多的數(shù)據(jù)庫配置信息
        ...
    ],
    ...
];

日志主鍵

可在模型中設(shè)置$logKey屬性修改需要記錄的主鍵名稱。

<?php

namespace Chance\Log\Test\model;

class User extends BaseModel
{
    // 日志記錄的主鍵名稱
    public string $logKey = 'id';
}

可讀性設(shè)置

通過表注釋、字段注釋與獲取器來生成可讀性的日志。

表注釋與字段注釋

image-20220309172842186

也可以在模型中通過$tableComment$columnComment設(shè)置表注釋與字段注釋。

<?php

namespace Chance\Log\Test\model;

class User extends BaseModel
{
    // 表注釋
    public $tableComment = '用戶';
    // 字段注釋
    public $columnComment = [
        'name' => '姓名',
        'sex' => '性別',
    ];
}

獲取器

設(shè)置一個名為字段名_text的獲取器。

<?php

namespace Chance\Log\Test\model;

class User extends BaseModel
{
    // Laravel ORM 獲取器設(shè)置方法
    public function getSexTextAttribute($key): string
    {
        return ['女','男'][($key ?? $this->sex)] ?? '未知';
    }

    // ThinkPHP ORM 獲取器設(shè)置方法
    public function getSexTextAttr($key): string
    {
        return ['女','男'][($key ?? $this->sex)] ?? '未知';
    }
}

日志生成忽略的字段

可在模型中通過 $ignoreLogFields 設(shè)置該表不希望生成日志的字段。

<?php

namespace Chance\Log\Test\model;

class User extends BaseModel
{
    // 日志生成忽略的字段
    public $ignoreLogFields = [
        'create_time',
        'update_time',
    ];
}

數(shù)據(jù)表不生成日志

可在模型中通過 $doNotRecordLog 設(shè)置該表不在生成日志。

<?php

namespace Chance\Log\Test\model;

class User extends BaseModel
{
    // 不生成該表的日志
    public $doNotRecordLog = true;
}

表模型映射關(guān)系

如果模型文件名與表名不相同,將查找不到表所對應(yīng)的模型。也就無法完成上面一些,需要在模型中設(shè)置的功能。所以可以設(shè)置一個表與模型的映射關(guān)系,來幫助查找表所對應(yīng)的模型。

如果是在 ThinkPHP、Laravel、webman 框架中使用,可使用 php vendor/bin/chance-fyi-operation-log 模型所在目錄 命令來自動構(gòu)建所選目錄中遞歸查找到的所有模型與表的映射關(guān)系。如果命令執(zhí)行失敗,也可選擇手動維護映射關(guān)系,并通過以下方法手動注入表模型映射關(guān)系。

\Chance\Log\facades\OperationLog::setTableModelMapping([
    "database1" => [
        "table1" => "app\\model\\Table1",
        "table2" => "app\\model\\Table2",
    ],
    "database2" => [],
]);

獲取日志信息

\Chance\Log\facades\OperationLog::getLog();

清除日志信息

\Chance\Log\facades\OperationLog::clearLog();

啟用禁用

# 啟用 (默認)
\Chance\Log\facades\OperationLog::enable();
# 禁用
\Chance\Log\facades\OperationLog::disable();

效果圖

截圖

截圖

截圖

截圖

截圖

截圖

贊助商