marcj / change-logger-behavior
该软件包最新版本(dev-master)没有提供许可证信息。
一种允许您在额外日志表中记录一个或多个列的行为,类似于Propel2的版本化行为。
dev-master
2015-01-08 12:05 UTC
Requires
- propel/propel: 2.0.*@dev
Requires (Dev)
- phpunit/phpunit: ~4.0
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="" />