2017-03-16 18 views
0

我認爲在softdelete中存在一個錯誤,並在Laravel中使用Eloquent ORM進行恢復。 我有這樣的 My Table ImageLaravel Eloquent ORM軟刪除並同時爲我恢復很多項目

更新的表:我現在做了一個視頻的問題:VIDEO OF MY PROBLEM



和我的代碼softdelete是

try { 
     $p= Post::findOrFail($id); 
    } catch (Exception $e) { 
return "error"; 
    } 
    $p->delete(); 
    return "Post deleted"; 

和我的恢復代碼:

`try { 
     $p= Post::withTrashed()->findOrFail($id); 
    } catch (Exception $e) { 
     return "error"; 
    } 
    $p->restore(); 
    return "Post restored";` 

.. 問題有時是:
當我刪除帖子號碼3時,它同時刪除號碼3和號碼2,有時工作正常,n與恢復相同的東西有時我還原例如數字3ñ它還原數字1也與此同時。
我不明白爲什麼,我嘗試了不同的代碼,如'where'聲明n'找到'n'destroy'。
像:

Post::withTrashed()->where('id', $id)->restore(); 
Post::find($id)->delete(); 

但同樣的問題,有時不讓N恢復正常工作,有時去侶刪除或同時恢復許多項目。
我也試過不同版本的laravel 5.2 n 5.4。
我使用mysql 5.6.35,mamp server php 7.1.1。

$post = Post::find($id); 
$post->delete(); 

既然你已經知道你的型號標識,你可以這樣做:

Post::destroy($id) 

或者通過刪除查詢:

回答

0

您可以通過調用Model實例刪除

$deletedPost = Post::where('id', $id)->delete(); 

順便說一句,我不認爲你需要那些嘗試/趕上那裏。嘗試沒有它。另外,如果您遇到問題,請嘗試執行dd($ id)並查看它轉儲的內容。如果它確定,繼續前進,然後執行dd($ p)並查看是否獲得了正確的模型。

仔細看看你的變量,轉儲它們或者如果你可以使用調試器,一行一行地去查看它出錯的地方。 希望這個幫助:) 祝你好運與問題!

+0

謝謝,但起初我已經這樣做了,那些嘗試n抓住是我最後的嘗試,以確保一個項目被選中,idont知道最新的問題,我不知道是否有人也有,如果你是免費的嘗試做同樣的ñ刪除ñ恢復很多次不僅一個項目,謝謝 – Simo

+0

西莫我不明白現在 - 你是什麼意思試圖刪除ñ恢復很多次?你的意思是很多模特(職位)?或者你的意思是很多時候像刪除帖子,刪除另一個帖子,然後另一個等等......或者同時刪除幾個帖子? – Vladd

+0

imean「刪除帖子,並刪除另一個帖子,然後另一個等」。我現在試着刪除帖子號碼3然後我刪除號碼2然後我刪除了號碼1,但是當我嘗試恢復號碼3時,號碼2也自動恢復,所以它就像這樣。 – Simo

0

你不需要嘗試catch塊來軟刪除。雄辯提供了delete()和restore()。
添加Illuminate\Database\Eloquent\SoftDeletes特質
protected $dates = ['deleted_at']到模型
一個deleted_at列添加到您的數據庫表(使用輔助/手動遷移)。
現在你可以調用delete()和restore()方法到你的模型上。 這會將當前日期時間值設置爲deleted_at列(最初它們爲空)。

希望這會有所幫助。

laravel-5。4 doc:soft-delete

+0

我已經做到了,那試試只是我的最後一次嘗試.ni與@Vladd進行了teamviwer會話n他看到問題,其驚人的軟刪除n恢復變得瘋狂n它刪除礦石恢復有時能夠正常工作n有時會發瘋n恢復或刪除兩項或更多項即使只有一項選擇n我們檢查也由dd($ id)n我們看到只有一個項目被選中 – Simo

+0

現在我提出了一個問題的視頻:https://youtu.be/Agmc5kdBM44 – Simo

+0

路由模型綁定怎麼樣 ''' public function destroy(\ App \ Post $ id) { $ id-> delete(); }''' @Simo – unreleased