在Yii中跟踪CreatedBy和UpdatedBy

时间:2012-02-17 09:57:07

标签: php mysql yii yii-cmodel

我有这样的数据库

=== Group ===
id
member_id
decsription

=== Member ===
id
name
description

一切正常。现在我扩展了我的Group表并添加了一些额外的字段,如created_byupdated_by,通过它我可以跟踪谁创建了谁以及谁做了更改。所以要实现我应该怎么做以及如何做到这一点?任何帮助和建议都会非常值得注意。

3 个答案:

答案 0 :(得分:1)

您可以在AR类中扩展beforeSave / beforeUpdate,只需设置$ this-> updated_by = Yii :: app() - > user-> getId();在更新。如果重写这些方法,请确保在完成后返回true,这样就不会阻止保存。您还可以将created_at和updated_at设置为新的CDbExpression(' NOW()');所以这些也总是最新的。

希望这有帮助!

注意:并不是说让你的AR模型了解当前登录的用户非常好,但它应该可以正常工作并且值得考虑。

答案 1 :(得分:0)

如果是一个Web应用程序,那么您可以使用会话将用户信息放入会话并访问用户ID并在数据库中保留(确保您拥有用户表的外键)

如果您使用的是Spring框架,则可以查看使用拦截器来访问和设置每次数据库更新调用的用户ID

答案 2 :(得分:-2)

确保您的created_byupdated_by字段为DATETIME,然后当您针对它们运行UPDATE次查询以更新数据时,请确保在没有任何引号的情况下通过NOW()。这会将这些字段更新为当前DATETIME,例如2012-02-17 10:00:00

希望这有帮助。