我想知道用ELOQUENT销毁多个数据库条目的最佳方法是什么,我找不到确定方法的方法。
所以我有3个id数组(2个带有整数,1个带有字符串)。 使用foreach和 - >删除()每个条目或销毁数组更好吗?
当我查看destroy函数时,它会说明以下内容:
我们实际上会从数据库表中提取模型并调用 单独删除它们,以便它们的事件被触发 在开发人员的情况下,正确使用一组正确的属性 想检查这些。
代码清楚地显示:
$key = $instance->getKeyName();
foreach ($instance->whereIn($key, $ids)->get() as $model) {
if ($model->delete()) {
$count++;
}
}
所以我猜没有真正的区别,破坏功能只是为了避免使用foreach。任何人都可以确认或通知并解释吗?
谢谢:)
答案 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();
});
但是你可以看到第一个更直接,第二个你可以在删除之前做自定义的事情。