Level 34
@grozavule you don't need to pass the quote_id:
$quote->files()->create([
'file_uri' => $path
]);
I have a form that uploads multiple files. Somehow the controller that handles the request creates two database records for each uploaded file. The HTTP request shows the proper number of files sent. The $request object passed into the controller method shows each file twice.
Here is the controller method:
public function store(Request $request)
{
$validInput = Validator::make($request->all(), [
'first_name' => ['required', 'string', 'max:35'],
'last_name' => ['required', 'string', 'max:50'],
'email_address' => ['required', 'email:rfc,dns', 'max:125'],
'phone_number' => ['required', 'string', 'max:15', 'regex:/^[+]*[0-9]*\s*[(]*[0-9]{3}[)]*[\s\.\-]*[0-9]{3}[\.\-]*[0-9]{4}$/'],
'quantity' => ['required', 'integer','min:1'],
'material' => ['required', 'string', 'max:50'],
'due_date' => ['required', 'after:today'],
'company_name' => ['required', 'string', 'max:75'],
'files' => ['required']
]);
if($validInput->fails())
{
return Response::json($validInput->errors(), 400);
}
$quote = new Quote;
$quote->first_name = $request->input('first_name');
$quote->last_name = $request->input('last_name');
$quote->email_address = $request->input('email_address');
$quote->phone_number = $request->input('phone_number');
$quote->quantity = $request->input('quantity');
$quote->material = $request->input('material');
$quote->due_date = $request->input('due_date');
$quote->company_name = $request->input('company_name');
$quote->save();
$counter = 0;
foreach ($request->file('files') as $file) {
$path = $file->storeAs(
'quote-requests/' . str_replace(' ', '_', $quote->company_name) . '/' . $quote->id,
$file->getClientOriginalName()
);
$quote->files()->create([
'quote_id' => $quote->id,
'file_uri' => $path
]);
$counter++;
}
if($counter === 0)
{
return Response::json(['files' => 'No files were received. Please try again'], 400);
}
return Response::json(['success' => 'Thank you. Your request has been received.'], 200);
}
Any ideas why it is duplicating records for each file sent via the form?
@grozavule you don't need to pass the quote_id:
$quote->files()->create([
'file_uri' => $path
]);
Please or to participate in this conversation.