親測可用:
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(); });