繁体   English   中英

批准编辑

[英]Approval of edits

我想知道最好的解决方案,用于审查需要管理员批准的用户编辑。

目前,我有一个带有以下字段的Users表。

  • 用户名
  • 密码
  • Created_at
  • 的updated_at

我有一个具有以下字段的关系表user_profile

  • 用户身份
  • 名字
  • 压缩
  • 关于我

我也有一个表pending_user_profile用于批准

  • 用户身份
  • 名字
  • 压缩
  • 关于我

目前,我正在检查pending_user_profile表中是否存在user_id,以在应用程序的编辑屏幕中显示未决数据。

我像这样检查它: PendingUser::where('user_id', $this->id)->exists();

还显示管理员的待处理数据。 (基本上,我只是将所有内容都保存在“ pending_user_profile”中。因此,管理员知道哪些用户在此处编辑了信息。

我正在获取这样的数据: PendingUser::all();

第一个问题:我不确定在有大量用户时这将如何保持下去。 因此,即时通讯试图为此找到更好的解决方案,或者想知道即时通讯使用的解决方案可能完全正常,我完全不必担心。 我检查未决字段的方法是否是好方法?

第二个问题:在存储待处理字段时,我不确定如何处理。 在提交给未决字段之前,我应该比较所有字段吗? 这样,我只是存储更改的字段。 此选项的缺点是我必须从2个单独的表中获取数据。

任何帮助将不胜感激。

提前致谢!

我不会为此创建另一个表。 只需在您的user_profile表中添加versionstatus即可。 如果用户对其进行编辑,请创建一个新记录,该记录具有较高的版本,并且状态为pending 您可以进行比较。 如果管理员接受,请将状态设置为active然后删除或保留前一个状态。

然后,您可以为用户设置两者的关系:

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
}

如果您不介意添加新表:

  1. 您可以将新值存储到额外的表中,并且可以在主表中添加一列,以指定该行是否具有待处理的编辑。 管理员批准更改后,将从附加表中获取新值,并将其更新到主表中。
  2. 您可以立即更新主表,但将旧数据保留在附加表中。 这样,如果管理员批准,您只需删除旧数据,如果被拒绝,则返回旧数据。 记住要更新状态栏

我建议我在此链接中找到并询问有关的数据库结构: 在此链接中

通过保存多个表更改,每个表都有其不同的结构,我在此系统上得到了很好的反馈。 而且我还应该告诉我,我正在使用Zend Frameword.so为用户,他们的更改需要管理员批准,我不使用例如产品模型。我使用了另一个名为ChangeApprovalNeededProduct模型的母亲来扩展产品模型,但是当对他们调用保存方法时,我会阻止从保存更改到产品表的系统,而不是我将更改的数据收集在键值表中,并将它们保存在其他名为更改表的地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM