【问题标题】:Laravel - Eloquent multiple delete vs destroy arrayLaravel - 雄辩的多次删除与销毁数组
【发布时间】:2017-08-28 17:48:19
【问题描述】:

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

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

当我查看destroy 函数时,它声明如下:

我们实际上会从数据库表中提取模型并调用 分别删除他们每个人,以便他们的事件被触发 正确使用一组正确的属性,以防开发人员 想检查这些。

而且代码清楚地显示:

$key = $instance->getKeyName();

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

所以我想没有真正的区别,而destroy函数只是为了避免使用foreach。谁能确认或告知并解释一下?

谢谢:)

【问题讨论】:

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


    【解决方案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();
    });
    

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

    【讨论】:

    • 谢谢,我已经弄清楚了那部分。我更想知道效率或 SQL 查询时间。
    • @MTH 在效率上两者是相等的,唯一的区别是删除前做的事情太多,但不会改变删除本身的性能。
    猜你喜欢
    • 2018-10-22
    • 2018-09-23
    • 2018-02-14
    • 2020-12-14
    • 2022-01-21
    • 1970-01-01
    • 2013-09-26
    • 2015-06-25
    • 1970-01-01
    相关资源
    最近更新 更多