2017-08-28 114 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