我正在實施一個應用程序,其中應由管理員首先批准某些內容。所以我在需要批准的模型中添加了一列。Laravel。不能使用其他特性軟刪除模型
所有應用程序中的普通用戶都只能看到管理員批准的模型,所以我向該模型添加了一個全局範圍,以僅過濾管理員批准的記錄。我的問題是,這與軟刪除無法正常工作。
當管理員決定不批准某些內容時,他應該能夠將其刪除。所以,我做這樣的事情:
$model = Model::withUnapproved()->find($model_id);
if(!$model){
//handle error
}
$model->delete();
這段代碼實際上找到的模式,但在執行刪除時,查詢是:
DELETE FROM table WHERE deleted_at IS NULL and approved_by IS NOT NULL and model_id=`id`;
爲什麼它被添加and approved_by IS NOT NULL
?這會導致找到任何記錄,因此不會刪除任何記錄。
如果將其更改爲$model->withUnapproved()->delete()
,它會刪除所有記錄。
任何燈在這?在此先感謝
我有同樣的問題。你知道了嗎?我無法刪除我的模型,因爲它應用了全局範圍,然後該模型不存在。 :\ – 2015-06-20 21:46:35
我爲它創建了一個問題 - https://github.com/laravel/framework/issues/9349 - 我目前只是手動指定'deleted_at'並使用softDeletes,直到出現修復或清理工作。 – 2015-06-20 22:02:51
我沒有,我沒有改寫這個特性來提供與軟刪除特性相同的功能。我沒有考慮在github中開放一個問題。立即給+1。 – 2015-06-20 22:20:31