Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Yii中跟踪CreatedBy和UpdatedBy_Php_Mysql_Yii_Yii Cmodel - Fatal编程技术网

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设置为在这些情况下有用的值。