$ids * @param array $names * @return array */ public function resolveIds(array $ids = [], array $names = []): array { $resolved = []; foreach ($ids as $id) { $id = (int) $id; if ($id > 0) { $resolved[$id] = $id; } } foreach ($names as $name) { $name = trim((string) $name); if ($name === '') { continue; } $row = ResearchDirection::withTrashed()->where('name', $name)->first(); if ($row) { if ($row->trashed()) { $row->restore(); } if ((int) $row->status !== 1) { $row->status = 1; $row->save(); } } else { $row = ResearchDirection::query()->create([ 'name' => $name, 'sort' => 0, 'status' => 1, ]); } $resolved[(int) $row->id] = (int) $row->id; } return array_values($resolved); } }