2015-10-02 52 views
1

我想知道審查需要由管理員批准的用戶編輯的最佳解決方案。批准修改

目前我有一個Users表與以下字段。

  • 用戶名
  • 密碼
  • Created_at
  • 的updated_at

我有一個關係表user_profile具有以下字段

  • USER_ID
  • 名字
  • 郵編
  • 國家
  • About_me

我也有一個表pending_user_profile的批准

  • USER_ID
  • Firstn AME
  • 郵編
  • 國家
  • About_me

目前我正在檢查是否有在pending_user_profile表爲user_id顯示編輯裏面的未決數據屏幕上的應用程序。

林檢查它是這樣的:PendingUser::where('user_id', $this->id)->exists();

的未決數據也被示出爲管理員。 (基本上我只是得到pending_user_profile內一切,讓管理員知道哪些用戶已編輯有信息

即時得到的數據是這樣的:。PendingUser::all();

第一個問題: 我不知道該怎麼當我有大量的用戶時,它會起作用,所以我試圖找到一個更好的解決方案,或者想知道現在使用的解決方案可能完全正確,我不應該擔心它。檢查待處理區域是否有好的方法?

第二個問題stion: 當存儲未決的領域我不知道如何處理它。 我應該比較所有領域之前提交他們的未決領域? 這種方式即時只是存儲更改的字段。這個選項的缺點是我必須從2個獨立的表中獲取數據。

任何幫助將不勝感激。

在此先感謝!

回答

0

我不會爲此創建另一個表。只需在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 
} 
0

如果你不介意添加新表:

  1. 你可以在新的值保存在額外的表和在主表中,您可以添加一個列,指定該行是否有掛起的編輯。當管理員批准更改時,將從額外表中提取新值並將其更新到主表中。
  2. 您可以立即更新主表,但將舊數據保留在附加表中。這樣,如果管理員批准,您只需刪除舊數據,如果被拒絕,則返回舊數據。 記住更新狀態欄
0

我建議DB結構我已經找到,並在這個環節問了一個問題有關:in this link

,我收到了相當不錯的反饋此係統上保存多個表變化,每個表都有不同的結構。 也我應該告訴我,我正在使用Zend Frameword.so用戶,他們的變化需要管理員批准我不使用例如產品模型.i使用另一個名爲ChangeApprovalNeededProduct模型的母親,擴展產品模型,但是當調用他們的保存方法我防止系統將更改保存到Product表中,而是將更改的數據收集到鍵值表中並將其保存在其他名爲Changes表的其他位置。