Laravel Mysql多条件重复去重
亲测可用:
public function deWeight() { $uniqueAddresses = []; $duplicates = []; YunUserEntry::orderBy('id', 'desc')->get() ->map(function (YunUserEntry $venue) use (&$uniqueAddresses, &$duplicates) { $address = sprintf("%s.%s.%s", $venue->company_id, date('Y-m-d', strtotime($venue->interview_date)), $venue->id_no); if (in_array($address, $uniqueAddresses)) { // address is a duplicate $duplicates[] = $venue->id; } else { $uniqueAddresses[] = $address; } }); $res = YunUserEntry::whereIn('id', $duplicates)->delete(); return BaseController::returnJson(200, "去重{$res}条", null); }
另外一种:
$uniqueAddresses = [];
Venue::all()
->filter(function(Venue $venue) use (&$uniqueAddresses) {
$address = sprintf("%s.%s.%s",
$venue->street,
$venue->house_number,
$venue->house_number_addition);
if (in_array($address, $uniqueAddresses)) {
// address is a duplicate
return $venue;
}
$uniqueAddresses[] = $address;
})->map(function(Venue $venue) {
$venue->delete();
});

浙公网安备 33010602011771号