2017-08-28 115 views
2

我想知道用ELOQUENT銷燬多個數據庫條目的最佳方法是什麼,我沒有找到一種方法來確定。Laravel - 雄辯多重刪除vs破壞陣列

所以我有3個ID的數組(2與整數,1與字符串)。 使用foreach和 - > delete()每個條目或銷燬數組是更好嗎?

當我看destroy功能,規定如下:

我們實際上會從數據庫表中拉模型,並呼籲 刪除他們每個人的獨立,使他們的活動會被解僱 正確在開發者 想要檢查這些屬性的情況下具有正確的一組屬性。

和代碼清楚地表明:

$key = $instance->getKeyName(); 

foreach ($instance->whereIn($key, $ids)->get() as $model) { 
    if ($model->delete()) { 
     $count++; 
    } 
} 

所以我想有沒有真正的區別和破壞作用僅僅是避免使用一個foreach的。任何人都可以確認或通知並解釋?

謝謝:)

回答

0

首先你需要知道的破壞和刪除之間的差異,破壞被認爲可用於去除實體(對象/模型),並刪除在查詢構建器中使用。

兩者是不同的方式,但他們就可以像同樣的目的:

Model::destroy(array(1, 2, 3)); 

$ids = explode(",", [1,2,3]); 
$model->find($ids)->each(function ($model, $key) { 
    //Do things before deleting 
    $model->delete(); 
}); 

但你可以看到第一個就是更直接,在第二你可以在刪除前自定義東西

+1

謝謝,我已經找到了那個部分。我更期待效率或SQL查詢時間。 – MTH

+0

@MTH就效率而言,兩者都是平等的,唯一的區別是如果你在刪除之前做了太多事情,但它不會改變本身的效果。 – Troyer

+0

好的,謝謝你的回答:) – MTH