'domain', 4 => 'type', 5 => 'type_domain', 6 => 'username', 7 => 'account', 8 => 'password', 9 => 'page', 10 => 'create_time', 11 => 'upload_time' ]; public function collection(Collection $collections) { $allSites = Site::query()->select(['id', 'domain'])->get(); $allLinks = Link::all(); $all = collect([]); $noSiteList = []; $noLink = []; foreach ($collections as $key => $collection) { if ($key < 1) { continue; } $temp = $this->fieldMap($collection); $hasSite = $allSites->firstWhere('domain', $temp['domain']); if ($hasSite) { $hasLink = $allLinks->firstWhere('url', $temp['type_domain']); if (!$hasLink) { $noLink[] = $temp; } $createdAt = $temp['create_time'] ? date('Y-m-d H:i:s', $temp['create_time']) : null; $inserted = [ 'link_type' => $temp['type'], 'link_url' => $temp['type_domain'], 'link_id' => $hasLink->id ?? 0, 'redundant_site_id' => $hasSite->id, 'username' => $temp['username'], 'email' => $temp['account'], 'password' => $temp['password'], 'url' => $temp['page'], 'created_at' => $createdAt, 'enable' => 1, 'status' => 5 ]; $all->push(collect($inserted)); } else { $noSiteList[] = $temp; } } $allItems = $all->chunk(5000)->toArray(); foreach ($allItems as $item) { LinkTaskDetail::query()->insert($item); } } public function collection2(Collection $collections) { $allLinks = Link::all(); $all = collect([]); foreach ($collections as $key => $collection) { if ($key < 1) { continue; } $temp = $this->fieldMap($collection); $linkTypes = Link::TYPES; array_walk($linkTypes, function ($item) { return strtolower($item); }); $typeIndex = array_search(strtolower($temp['type']), $linkTypes); $noTypeList = []; if ($typeIndex === false) { // continue; $noTypeList[] = $temp['type']; } dd($noTypeList); $hasLink = $allLinks->where('url', $temp['type_domain'])->firstWhere('type', $typeIndex); if (!$hasLink) { $inserted = [ 'is_export' => 1, 'type' => $typeIndex, 'url' => $temp['type_domain'], 'created_at' => date('Y-m-d H:i:s') ]; $all->push(collect($inserted)); } } $allItems = $all->chunk(5000)->toArray(); // foreach ($allItems as $item) { // Link::query()->insert($item); // } } public function fieldMap($collect): array { $result = []; foreach ($collect as $inx => $val) { if (empty(self::FIELD_MAP[$inx])) continue; $result[self::FIELD_MAP[$inx]] = $val; } return $result; } }