I was able to get a solution to my initial error on this thread, but my new issue, with the same code, is its not providing an on-page error if validation fails, it throws a 500 error (with APP_DUBUG set to false), but when APP_DEBUG is set to true, I get an error page with a ...Integrity constraint violation: 1062 Duplicate entry...
.
What I am trying to sort out is how to get an error message to appear inside @error
Workorders/Edit.php
...
public function cloneWorkorder($id)
{
$this->validate([
'new_workorder_number' => 'required|unique:workorders,id|min:4',
]);
//dd($this->new_workorder_number);
$startingInvoiceNumber = 109000;
$record = Workorder::find($id);
$count = count(Workorder::withTrashed()->get());
$wo = $startingInvoiceNumber+$count;
$gen = Gentype::where('genable_id', $record->id)->where('genable_type', 'App\Models\Workorder')->get();
$billto = $gen->where('generator_type', 'Bill To')->pluck('generator_id')[0];
$generator = $gen->where('generator_type', 'Generator')->pluck('generator_id')[0];
$b = Generator::find($billto);
$g = Generator::find($generator);
if(count($gen) < 2) {
session()->flash('failed-message', 'You need both a Billto and Generator in order to clone this workorder');
return redirect()->route('workorder.edit', $record->id);
} else {
Workorder::create([
'workorder_number' => $this->new_workorder_number,
'workorder_date' => date('Y-m-d'),
'workorder_invoice_number' => $startingInvoiceNumber + $count,
'site_contact_name' => $record->site_contact_name,
'site_contact_email' => $record->site_contact_email,
'site_contact_phone' => $record->site_contact_phone,
'office' => $record->office,
'creator' => Auth::user()->name,
'department' => Auth::user()->department,
]);
$latestWorkorder = Workorder::latest('id')->first()->id;
$newWorkorder = Workorder::find($latestWorkorder);
//dd($newWorkorder);
Gentype::create([
'generator_id' => $b->id,
'generator_type' => 'Bill To',
'genable_id' => $newWorkorder->id,
'genable_type' => 'App\Models\Workorder',
]);
Gentype::create([
'generator_id' => $g->id,
'generator_type' => 'Generator',
'genable_id' => $newWorkorder->id,
'genable_type' => 'App\Models\Workorder',
]);
$newWorkorder->update([
'static_billto' => $b->generator_name,
'static_generator' => $g->generator_name
]);
}
return redirect()->route('workorder.edit', $newWorkorder->id);
}
...
edit.blade.php
...
<div class="flex-1 mr-2">
<input id="new_workorder_number"
wire:model.defer="new_workorder_number"
placeholder="New Work Order Number">
@error('new_workorder_number')
<span class="mt-2 text-sm text-red-600">{{ $message }}</span>
@enderror
</div>
...
error
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '447747' for key 'workorders.workorders_workorder_number_unique'
The problem comes from workorder_number
because it should be unique
so to add validation for this column all you need is to fix the validation as below
$this->validate([
'new_workorder_number' => 'required|unique:workorders,workorder_number|min:4',
]);