Php 在Yii中跟踪CreatedBy和UpdatedBy
我有这样的数据库Php 在Yii中跟踪CreatedBy和UpdatedBy,php,mysql,yii,yii-cmodel,Php,Mysql,Yii,Yii Cmodel,我有这样的数据库 === Group === id member_id decsription === Member === id name description 一切正常。现在我扩展了我的组表并添加了一些额外的字段,如created\u by和updated\u by,通过它,我可以跟踪谁创建了以及谁做了更改。因此,为了实现我应该做什么以及如何做?任何帮助和建议都将非常值得赞赏。请确保您的创建人和更新人字段是DATETIME,然后在对它们运行更新查询以更新数据时,确保您通过了NOW(),
=== Group ===
id
member_id
decsription
=== Member ===
id
name
description
一切正常。现在我扩展了我的组表并添加了一些额外的字段,如
created\u by
和updated\u by
,通过它,我可以跟踪谁创建了以及谁做了更改。因此,为了实现我应该做什么以及如何做?任何帮助和建议都将非常值得赞赏。请确保您的创建人
和更新人
字段是DATETIME,然后在对它们运行更新
查询以更新数据时,确保您通过了NOW()
,没有任何引号。这会将这些字段更新为当前的DATETIME
,例如2012-02-17 10:00:00
希望这有帮助。如果是web应用程序,那么您可以使用会话将用户信息放入会话中,访问用户id并将其保存在数据库中(确保您具有用户表的外键)
如果您使用的是Spring framework,那么可以考虑使用拦截器来访问和设置每个数据库更新调用的用户id您可以在AR类中扩展beforeSave/beforeUpdate,只需设置$this->updated_by=Yii::app()->user->getId();正在更新。如果重写这些方法,请确保在完成时返回true,以便不阻止保存。您还可以将created_at和updated_at设置为new cdbeexpression('NOW()');所以这些都是最新的 希望这有帮助
注意:并不是说让您的AR模型了解当前登录的用户很好,但它应该可以正常工作,值得考虑。它不是在上创建的,它是由_by.Ok创建的。谢谢@arkin的快速回复。我想知道如何获取创建者id以及在该字段中更新其id的人。No Spring:这是一个PHP web应用程序,如果您查看标签(yii framework、PHP、mysql),我强烈建议在db中使用时间戳,而不是datetime,因为时区问题。此外,通过在模型中添加Yii::app()->user->id,您必须小心单元测试和命令行使用。确保将Yii::app()->user->id设置为在这些情况下有用的值。