Tthe class of my component looks like this:
class Works extends Component
{
public $works, $title, $lyric_author_id, $music_author_id, $content, $work_id, $user_id, $genre_id;
public $genres;
public $genre;
public $user;
public $authors;
public $author;
public $isOpen = 0;
public $confirmingWorkDeletion = false;
protected $messages = [
'title.required' => 'La obra de llevar un título.',
'lyric_author_id.required' => 'Se requiere el Autor de la Letra.',
'music_author_id.required' => 'Se requiere el Autor de la Música.',
'genre_id.required' => 'Se requiere el Género de la Música.',
'content.required' => 'Se requiere el Contenido de la Obra.',
];
public function mount()
{
$this->works = Work::all();
$this->genres = Genre::all();
$this->authors = Author::all();
}
public function render()
{
return view('livewire.works.index');
}
public function create()
{
$this->resetInputFields();
$this->openModal();
}
public function openModal()
{
$this->isOpen = true;
}
public function closeModal()
{
$this->isOpen = false;
}
private function resetInputFields()
{
$this->title = '';
$this->lyric_author_id = '';
$this->music_author_id = '';
$this->genre_id = '';
$this->content = '';
// $this->user_id = '';
}
public function store()
{
$this->validate([
'title' => 'required',
'lyric_author_id' => 'required',
'music_author_id' => 'required',
'genre_id' => 'required',
'content' => 'required',
]);
$userId = auth()->user()->id;
Work::updateOrCreate(['id' => $this->work_id], [
'title' => $this->title,
'lyric_author_id' => $this->lyric_author_id,
'music_author_id' => $this->music_author_id,
'genre_id' => $this->genre_id,
'content' => $this->content,
'user_id' => $userId,
]);
session()->flash(
'message',
$this->work_id ? 'Obra actualizada correctamente.' : 'Obra creada con exito.'
);
$this->closeModal();
$this->resetInputFields();
}
public function edit($id)
{
$work = Work::findOrFail($id);
$this->work_id = $id;
$this->title = $work->title;
$this->lyric_author_id = $work->lyric_author_id;
$this->music_author_id = $work->music_author_id;
$this->genre_id = $work->genre_id;
$this->content = $work->content;
$this->user_id = $work->user_id;
$this->openModal();
}
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function confirmWorkDeletion($id)
{
$this->confirmingWorkDeletion = $id;
}
public function deleteWork($id)
{
Work::find($id)->delete();
$this->confirmingWorkDeletion = false;
session()->flash('message', 'Obra eliminada correctamente.');
}
}