2015-08-25 69 views
1

當我軟刪除用戶時,相關數據會發生什麼變化?例如,我有一張捐款表,我們會跟蹤用戶爲每個廣告系列提供的所有捐款。Laravel 5 - softDeleting用戶

public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 

捐款表的模式,

Schema::create('donations', function(Blueprint $table) 
     { 
      $table->increments('id'); 
      $table->integer('campaign_id'); 
      $table->integer('user_id'); 
      $table->float('amount'); 
      $table->timestamps(); 
     }); 

所以,如果用戶在softdeleted那麼如何爲廣告活動總量要得到受影響。還有一個評論表,它跟蹤用戶使用的所有評論。我們正在使用softdelete,以便我們稍後可以重新激活帳戶。這是當前場景中的一種好方法,還是我可以在users表中使用狀態字段來停用或重新激活用戶。

+0

我會建議使用其他時間戳稱爲deleted_at,如果爲NULL,則用戶不會被刪除,否則用戶將被刪除。當您想要重新激活帳戶時,您總是可以將deleted_at字段設置爲NULL – Szenis

+1

捐款必須保留在數據庫IMO中。即使關聯的用戶被刪除。我想,你在這裏使用適當的方法。 – ChainList

回答

3

當用戶被軟刪除時,相關數據不會發生。軟刪除的唯一功能是將(用戶表的)列deleted_at設置爲當前日期時間(而不是空)。我不知道你如何計算總金額等,但如果這些值存儲在數據庫中,它們將保持不變。

如果你想要例如刪除所有用戶的註釋時可以使用軟刪除用戶查看here如何訂閱刪除/刪除的事件並使用它觸發刪除相關模型。

+0

總數是使用$ campaign-> donations-> sum('amount') –

+1

計算的。因此,這不會更改並計算表中的所有捐款,除非所有用戶的捐款都將被軟刪除。 –

+0

當軟刪除的用戶嘗試登錄時會發生什麼,他的記錄是否也會在Auth控制器中進行檢查?有沒有辦法做到這一點,以便我可以給他們一個選項來重新激活他們的帳戶 –

1

由於您使用的是soft deletes您確實知道軟刪除只會影響一條記錄,在這種情況下,您的用戶。

所以當你軟刪除一個用戶會發生什麼,捐贈和評論?

沒有。

您正在軟刪除用戶,而不是執行級聯軟刪除。

如果你需要軟刪除相關數據,你必須做手工