orderBy('pid')->get(); $system_name = $system_cate->pluck('name')->toArray(); $name2publish_type = $system_cate->pluck('publish_type', 'name')->toArray(); $own_cate = Category::where('agent_id', Admin::user()->id)->get(); $own_name = $own_cate->pluck('name')->toArray(); $no_name = array_diff($system_name, $own_name); //找到系统有,但自己没有的分类名 $max_id = Category::where('agent_id', Admin::user()->id)->max('id'); Category::insert(array_map(function ($name) use ($name2publish_type) { return [ 'agent_id' => Admin::user()->id, 'name' => $name, 'pid' => 0, 'sort' => 255, 'publish_type' => $name2publish_type[$name], ]; }, $no_name)); $own_cate = Category::where('agent_id', Admin::user()->id)->orderBy('id')->get(); //获取所有分类,包含新插入的分类 $system_pid = $system_cate->pluck('pid', 'name')->toArray(); //获取原来系统的PID $own_id = $own_cate->pluck('id', 'name')->toArray(); //获取自己的PID,不考虑name重复的情况 foreach ($own_cate as $cate) { //不是新插入的分类不处理 if ($cate->id <= $max_id) continue; //如果原来系统PID不是0,则获取父类的名称,并在自己的分类中获取对应名称ID,再设置父分类 $sys_pid = $system_pid[$cate['name']]; if ($sys_pid != 0) { $sys_pid_name = $system_cate->find($sys_pid)['name']; $cate->pid = $own_id[$sys_pid_name]; $cate->save(); } } return $this->response()->success('操作成功!')->refresh(); } /** * @return string|void */ protected function href() { // return admin_url('auth/users'); } /** * @return string|array|void */ public function confirm() { return ['操作确认', '确定要导入系统分类吗?']; } /** * @param Model|Authenticatable|HasPermissions|null $user * * @return bool */ protected function authorize($user): bool { return true; } }