$program, "appends" => $program->appends, ]); } public function add(Request $request, Programs $program) { $append = new ProgramAppends(); if (sizeof($program->appends) === 0) { $append->is_original = 1; } return view("program.construct.append.create", [ "program" => $program, "append" => $append ]); } public function create(Request $request, Programs $program) { $request->validate([ "name" => ["required_without:is_original"], "from" => ["required"], "price" => ["required", "numeric"], ]); $createPayload = $request->only(["name", "from", "price", "append"]); $append = $program->appends()->create($createPayload); $append->is_original = $request->post("is_original", 0); $append->save(); return redirect(route("program.construct.append.list", [ "program"=>$program->id, ])); } public function edit(Request $request, ProgramAppends $append) { return view("program.construct.append.create", [ "program" => $append->program, "append" => $append ]); } public function submit(Request $request, ProgramAppends $append) { $submitPayload = $request->only(["name", "from", "price", "append"]); $append->update($submitPayload); $append->is_original = $request->post("is_original", 0); $append->save(); return redirect(route("program.construct.append.list", [ "program"=>$append->program->id, ])); } public function from_list(Request $request) { $query = ProgramAppends::query()->groupBy("from") ->select("from") ->selectRaw("count(1) as total_count") ->orderByDesc("total_count"); return $query->get()->map(function ($item) { return [ "text" => $item["from"], "value" => $item["from"], "alias" => implode("", \pinyin($item["from"], PINYIN_NO_TONE)), "abbr" => \pinyin_abbr($item["from"]), ]; })->toArray(); } }