Laravel - Eloquent多个删除vs销毁数组

时间:2017-08-28 09:16:52

标签: laravel optimization laravel-5 eloquent query-optimization

我想知道用ELOQUENT销毁多个数据库条目的最佳方法是什么,我找不到确定方法的方法。

所以我有3个id数组(2个带有整数,1个带有字符串)。 使用foreach和 - >删除()每个条目或销毁数组更好吗?

当我查看destroy函数时,它会说明以下内容:

  

我们实际上会从数据库表中提取模型并调用   单独删除它们,以便它们的事件被触发   在开发人员的情况下,正确使用一组正确的属性   想检查这些。

代码清楚地显示:

$key = $instance->getKeyName();

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

所以我猜没有真正的区别,破坏功能只是为了避免使用foreach。任何人都可以确认或通知并解释吗?

谢谢:)

1 个答案:

答案 0 :(得分:1)

首先,你需要知道destroy和delete之间的区别,destroy被认为用于删除实体(对象/模型)和delete用于查询构建器。

两者都有不同的方式,但它们具有相同的目的:

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

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

但是你可以看到第一个更直接,第二个你可以在删除之前做自定义的事情