marcj/change-logger-behavior

该软件包最新版本(dev-master)没有提供许可证信息。

一种允许您在额外日志表中记录一个或多个列的行为,类似于Propel2的版本化行为。

dev-master 2015-01-08 12:05 UTC

This package is auto-updated.

Last update: 2024-09-10 23:34:31 UTC


README

ChangeLoggerBehavior

类似于VersionableBehavior的Propel2行为,但基于列。它基本上将所有更改记录到为每个在log参数中指定的列定义的额外日志表中。

用法

<table name="user">
    <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
    <column name="username" type="VARCHAR" size="100" primaryString="true" />
    <behavior name="change_logger">
        <parameter name="log" value="username"/>
        <parameter name="created_at" value="true"/>
    </behavior>
</table>

如果您没有通过composer安装此行为,则需要指定完整类名作为行为名称

    <behavior name="\MJS\ChangeLogger\ChangeLoggerBehavior">

您也可以定义多个列。每个列都有自己的日志表。

    <parameter name="log" value="username, email"/>
$user = UserQuery::create()->findByUsername('Klaus');
$user->setUsername('Erik');
$user->setUsernameChangeComment('Due to XY');
$user->setUsernameChangeBy('Superuser');
$user->save()

$usernameChangeLogs = UserUsernameLogQuery::create()
    ->filterByOrigin($user)
    ->orderByVersion('desc')
    ->find();

foreach ($usernameChangeLogs as $log) {
    echo $log->getVersion();
    echo $log->getId(); //foreignKey to `user`
    echo $log->getUsername(); //'Klaus'
    echo $log->getCreatedAt(); //timestamp
}

参数

及其默认值。

<parameter name="created_at" value="false" />
<parameter name="created_by" value="false" />
<parameter name="comment" value="false" />
<parameter name="created_at_column" value="log_created_at" />
<parameter name="created_by_column" value="log_created_by" />
<parameter name="comment_column" value="log_comment" />
<parameter name="version_column" value="version" />
<parameter name="log" value="" />