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();
    });


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM