在 Eloquent 中,假設要刪除某使用者的資料:
User::select(['name'])->chunk(100, function ($users) { foreach ($users as $user) { if ( condition ) { $user->delete(); } } }
以上的寫法,在 $user->delete()
,即使 Model 回傳刪除成功,但實際上資料庫的資料不會被刪除。
原因是 Eloquent 刪除資料是以 id
欄位為準,若 select
不包含 id
則會刪除失敗。
在 select()
中加入 id
即可正常刪除資料:
User::select(['id', 'name'])->chunk(100, function ($users) { // .... }
ps. 文件沒寫,fu …..