'', 'name' => '', 'adddate' => '', 'filename' => '', 'language_type' => '', 'vocal' => true, 'situation' => '', 'copyright01' => '', 'copyright02' => '', 'note01' => '', 'note02' => '', 'note03' => '', 'note04' => '', 'enable' => true, ]; //protected $rules = [ // 'name' => 'required|string|max:255', // //]; public function mount() { $this->songCategories = SongCategory::all(); $this->songLanguageType = collect(SongLanguageType::cases())->map(fn ($languageType) => [ 'name' => $languageType->labels(), 'value' => $languageType->value, ])->toArray(); $this->songSituation = collect(SongSituation::cases())->map(fn ($situation) => [ 'name' => $situation->labels(), 'value' => $situation->value, ])->toArray(); $this->canCreate = Auth::user()?->can('song-edit') ?? false; $this->canEdit = Auth::user()?->can('song-edit') ?? false; $this->canDelect = Auth::user()?->can('song-delete') ?? false; } public function openModal($id = null) { $this->resetFields(); if ($id) { $song = Song::findOrFail($id); $this->songId = $song->id; $this->fields = $song->only(array_keys($this->fields)); $this->selectedCategories = $song->categories()->pluck('id')->toArray(); $this->selectedArtists = $song->artists()->pluck('id')->toArray(); //dd($this->fields,$this->selectedCategories,$this->selectedArtists); } $this->showModal = true; } public function closeModal() { $this->resetFields(); $this->showModal = false; } public function save() { //$this->validate(); if ($this->songId) { if ($this->canEdit) { $song = Song::findOrFail($this->songId); $song->update($this->fields); // ⭐ 同步多對多關聯 $song->artists()->sync($this->selectedArtists ?? []); $song->categories()->sync($this->selectedCategories ?? []); $this->notification()->send([ 'icon' => 'success', 'title' => '成功', 'description' => '歌曲已更新', ]); } } else { if ($this->canCreate) { $song = Song::create($this->fields); // ⭐ 同步多對多關聯 $song->artists()->sync($this->selectedArtists ?? []); $song->categories()->sync($this->selectedCategories ?? []); $this->notification()->send([ 'icon' => 'success', 'title' => '成功', 'description' => '歌曲已新增', ]); } } $this->resetFields(); $this->showModal = false; $this->dispatch('pg:eventRefresh-song-table'); } public function deleteSong($id) { if ($this->canDelect) { Song::findOrFail($id)->delete(); $this->notification()->send([ 'icon' => 'success', 'title' => '成功', 'description' => '歌曲已刪除', ]); } } public function resetFields() { foreach ($this->fields as $key => $value) { if($key == 'vocal' || $key == 'enable'){ $this->fields[$key] = true ; }else if($key == 'adddate'){ $this->fields[$key] = now()->format('Y-m-d'); }else{ $this->fields[$key] = '' ; } } $this->songId = null; } public function render() { return view('livewire.admin.song-form'); } }