【发布时间】:2019-09-07 00:17:52
【问题描述】:
我有一个包含 3 列 id, sub_id, name 的表。那是一张很大的桌子,而且有一些重复。
检测重复项以便我可以删除它们的最佳方法是什么?
我试过了,但它会返回所有内容(我猜想 id 会让它们变得不唯一)
$collection = \App\MyModel::all();
$colUnique = $collection->unique(['name', 'sub_id']);
$dupes = $collection->diff($colUnique);
我想获得具有相同name 和sub_id 的模型。
id sub_id name
1 2 John
2 2 John <- duplicate
3 2 Robin <- unique
【问题讨论】:
-
为什么不使用 toArray() 函数并通过运行 php 函数 array_unique 和 array_diff 获取所有重复条目,然后运行 foreach 循环并删除它们。
-
或者如果你想在检索模型时使用 SQL 方式使用 groupBy 函数。
标签: laravel eloquent query-builder laravel-collection