刪除

你可以在將資料寫入資料庫後刪除資料。如果已檢索模型例項,則可以刪除模型例項,也可以指定要刪除的記錄的條件。

要刪除模型例項,請檢索它並呼叫 delete() 方法:

$user = User::find(1);
$user->delete();

或者,你可以通過 destroy() 方法指定要刪除的記錄的主鍵(或主鍵陣列):

User::destroy(1);
User::destroy([1, 2, 3]);

你還可以將查詢與刪除相結合:

User::where('age', '<', 21)->delete();

這將刪除符合條件的所有使用者。

注意:通過 Eloquent 執行批量刪除語句時,不會為已刪除的模型觸發 deletingdeleted 模型事件。這是因為在執行 delete 語句時從不實際檢索模型。

軟刪除

有時你不希望永久刪除記錄,而是將其保留用於審計或報告目的。為此,Eloquent 提供軟刪除功能。

要向模型新增軟刪除功能,你需要匯入 SoftDeletes 特徵並將其新增到你的 Eloquent 模型類:

namespace Illuminate\Database\Eloquent\Model;
namespace Illuminate\Database\Eloquent\SoftDeletes;

class User extends Model
{
     use SoftDeletes;
}

刪除模型時,它會在模型​​表中的 deleted_at 時間戳列上設定時間戳,因此請務必先在表格中建立 deleted_at 列。或者在遷移中,你應該在藍圖上呼叫 softDeletes() 方法來新增 deleted_at 時間戳。例:

Schema::table('users', function ($table) {
    $table->softDeletes();
});

任何查詢都將省略軟刪除的記錄。如果你願意,可以使用 withTrashed() 示波器強制顯示它們:

User::withTrashed()->get();

如果你希望允許使用者在軟刪除後恢復記錄(即在垃圾桶型別區域中),那麼你可以使用 restore() 方法:

$user = User::find(1);
$user->delete();
$user->restore();

要強制刪除記錄,請使用 forceDelete() 方法,該方法將從資料庫中真正刪除記錄:

$user = User::find(1);
$user->forceDelete();