Mysql 批准编辑
我想知道审查需要管理员批准的用户编辑的最佳解决方案 目前,我有一个Mysql 批准编辑,mysql,database,laravel,database-design,Mysql,Database,Laravel,Database Design,我想知道审查需要管理员批准的用户编辑的最佳解决方案 目前,我有一个Users表,其中包含以下字段 用户名 密码 创建于 更新地址 我有一个带有以下字段的关系表user\u profile 用户id 名字 姓氏 街头 拉链 陈述 关于我 我还有一个表pending\u user\u profile用于审批 用户id 名字 姓氏 街头 拉链 陈述 关于我 目前,我正在检查pending_user_profile表中是否有用户id,以在应用程序的编辑屏幕内显示pending数据 我这样检查
Users
表,其中包含以下字段
- 用户名
- 密码
- 创建于
- 更新地址
user\u profile
- 用户id
- 名字
- 姓氏
- 街头
- 拉链
- 陈述
- 关于我
pending\u user\u profile
用于审批
- 用户id
- 名字
- 姓氏
- 街头
- 拉链
- 陈述
- 关于我
PendingUser::where('user_id',$this->id)->exists()代码>
还显示了管理员的挂起数据。(基本上,我只是得到了挂起的用户配置文件中的所有信息。因此管理员知道用户编辑了哪些信息
我得到的数据如下:PendingUser::all();
第一个问题:
我不确定当我有大量的用户时,这将如何维持。因此,我正在尝试找到一个更好的解决方案,或者想知道我现在使用的解决方案可能完全没有问题,我根本不应该担心。我检查待定字段的方法是一个好方法吗
第二个问题:
当存储挂起字段时,我不知道如何处理它。
在将所有字段提交到挂起字段之前,是否应比较它们?
这种方式我只是存储更改的字段。这个选项的缺点是我必须从两个单独的表中获取数据
任何帮助都将不胜感激
提前感谢!我不会为此创建另一个表。只需将版本
和状态
添加到您的用户配置文件
表中。如果用户编辑它,请创建一个新记录,版本更高,状态为挂起
。然后您可以进行比较。如果管理员接受它,请将状态设置为活动编码>并删除或保留上一个
然后,您可以为用户设置两者的关系:
public function pendingProfile() {
return $this->hasOne('UserProfile')
->where('status', 'pending')
->orderBy('version', 'desc');
}
public function currentProfile() {
return $this->hasOne('UserProfile')->where('status', 'active');
// Here you can also take the latest version if you delete any other active,
// or add the where and order as above to get the latest
}
我不会为此创建另一个表。只需将版本
和状态
添加到您的用户配置文件
表中。如果用户编辑它,请创建一个新记录,版本更高,状态为待定
。您可以进行比较。如果管理员接受它,请将状态设置为活动
,然后删除或保留前一个
然后,您可以为用户设置两者的关系:
public function pendingProfile() {
return $this->hasOne('UserProfile')
->where('status', 'pending')
->orderBy('version', 'desc');
}
public function currentProfile() {
return $this->hasOne('UserProfile')->where('status', 'active');
// Here you can also take the latest version if you delete any other active,
// or add the where and order as above to get the latest
}
如果您不介意添加新表:
您可以将新值存储到额外表中,并在主表中添加一列,指定行是否有挂起的编辑。当管理员批准更改时,新值将从额外表中提取并更新到主表中
您可以立即更新主表,但将旧数据保留在额外表中。这样,如果管理员批准,您只需删除旧数据,如果拒绝,则返回旧数据。
记住更新状态列
如果您不介意添加新表:
您可以将新值存储到额外表中,并在主表中添加一列,指定行是否有挂起的编辑。当管理员批准更改时,新值将从额外表中提取并更新到主表中
您可以立即更新主表,但将旧数据保留在额外表中。这样,如果管理员批准,您只需删除旧数据,如果拒绝,则返回旧数据。
记住更新状态列
我建议使用我找到的DB结构,并在此链接中提出了一个问题:
我在这个系统上得到了很好的反馈,保存了多个表的更改,每个表都有不同的结构。
我还应该告诉大家,我使用的是Zend Frameword。因此,对于需要管理员批准的用户,我不使用例如Product model。我使用另一个名为ChangeApprovalNeedProduct model的母亲来扩展Product model,但在对其调用save方法时,我阻止系统将更改保存到Product表,而是收集更改将数据保存在键值表中,并将其保存在其他名为Changes table的位置。我建议使用我在该链接中找到并询问的DB结构:
我在这个系统上得到了很好的反馈,保存了多个表的更改,每个表都有不同的结构。
我还应该告诉大家,我使用的是Zend Frameword。因此,对于需要管理员批准的用户,我不使用例如Product model。我使用另一个名为ChangeApprovalNeedProduct model的母亲来扩展Product model,但在对其调用save方法时,我阻止系统将更改保存到Product表,而是收集更改将数据保存在键值表中,并将其保存在另一个名为“更改表”的位置