['except' => '']]; public function rules() { return [ 'orangePill.book_case_id' => ['required'], 'orangePill.user_id' => ['required'], 'orangePill.amount' => ['required', 'numeric'], 'orangePill.date' => ['required', 'date'], 'orangePill.comment' => ['required', 'string'], 'image' => ['max:8192', Rule::requiredIf(!$this->orangePill->id), 'image', 'nullable'], // 8MB Max ]; } public function mount() { if (! $this->orangePill) { $this->orangePill = new OrangePill([ 'user_id' => auth()->id(), 'book_case_id' => $this->bookCase->id, 'date' => now(), 'amount' => 1, ]); } elseif ($this->orangePill->user_id !== auth()->id()) { abort(403); } if (!$this->fromUrl) { $this->fromUrl = url()->previous(); } } public function save() { $this->validate(); $this->orangePill->save(); if ($this->image) { $this->orangePill ->addMedia($this->image) ->usingFileName(md5($this->image->getClientOriginalName()).'.'.$this->image->getClientOriginalExtension()) ->toMediaCollection('images'); } return redirect($this->fromUrl); } public function deleteMe() { $this->orangePill->delete(); return redirect($this->fromUrl); } public function render() { return view('livewire.book-case.form.orange-pill-form'); } }