Anonymous
Методы проверки и генерации данных в Laravel: какой метод лучше?
Сообщение
Anonymous » 30 окт 2024, 19:57
Мне трудно выбрать между двумя разными методами обработки данных из формы в Laravel. Оба метода описаны ниже:
1: Создание с проверенными данными после проверки
Код: Выделить всё
$validatedData = $request->validate([
'customer_id' => 'required|integer|exists:users,id',
'request_id' => 'required|integer|exists:requests,id',
'addressInfo.city' => 'required|string|max:255',
'addressInfo.district' => 'required|string|max:255',
'addressInfo.neighborhood' => 'required|string|max:255',
'addressInfo.addressDetail' => 'nullable|string|max:500',
'description' => 'required|string|max:500',
'files.*' => 'nullable|file|mimes:jpeg,png,jpg,pdf|max:2048',
]);
$company = getCurrentCompany();
$customer = $company->customers()->findOrFail($validatedData['customer_id']);
$request = $customer->requests()->findOrFail($validatedData['request_id']);
$photos = [];
// File upload processing
foreach ($request->files ?? [] as $index => $file) {
if ($request->hasFile('files.' . $index)) {
$photos[] = [
'index' => $index,
'file' => $request->file('files.' . $index)->store('keyRequests/photos')
];
}
}
// Prepare extra data
$validatedData['photos'] = $photos;
$validatedData['requester_model'] = 'App\Models\Company';
$validatedData['status'] = KeyRequest::getStatuses()[0];
$validatedData['company_id'] = $company->id;
$validatedData['request_address_id'] = $request->address->id;
$validatedData['deed_id'] = $request->deed->id;
// Create key request
$createData = Arr::except($validatedData, ['confirmation', 'files', 'redirectToEdit']);
$keyRequest = $customer->keyRequests()->create($createData);
2: Создание запроса напрямую с использованием
Код: Выделить всё
$validatedData = $request->validate([
'customer_id' => 'required|integer|exists:users,id',
'request_id' => 'required|integer|exists:requests,id',
'addressInfo.city' => 'required|string|max:255',
'addressInfo.district' => 'required|string|max:255',
'addressInfo.neighborhood' => 'required|string|max:255',
'addressInfo.addressDetail' => 'nullable|string|max:500',
'description' => 'required|string|max:500',
'files.*' => 'nullable|file|mimes:jpeg,png,jpg,pdf|max:2048',
]);
$company = getCurrentCompany();
$customer = $company->customers()->findOrFail($validatedData['customer_id']);
$request = $customer->requests()->findOrFail($validatedData['request_id']);
$photos = [];
// File upload processing
foreach ($request->files ?? [] as $index => $file) {
if ($request->hasFile('files.' . $index)) {
$photos[] = [
'index' => $index,
'file' => $request->file('files.' . $index)->store('keyRequests/photos')
];
}
}
// Prepare extra data
$request['photos'] = $photos;
$request['requester_model'] = 'App\Models\Company';
$request['status'] = KeyRequest::getStatuses()[0];
$request['company_id'] = $company->id;
$request['request_address_id'] = $request->address->id;
$request['deed_id'] = $request->deed->id;
// Create key request
$keyRequest = $customer->keyRequests()->create($request->except(['confirmation', 'files', 'redirectToEdit']));
Мои вопросы:
Какой метод более безопасен и предпочтителен?
Есть ли разница в производительности между этими двумя методами?
В целом, в каких ситуациях рекомендуется использовать тот или иной метод?
Спасибо за помощь!
Подробнее здесь:
https://stackoverflow.com/questions/791 ... -is-better
1730307457
Anonymous
Мне трудно выбрать между двумя разными методами обработки данных из формы в Laravel. Оба метода описаны ниже: 1: Создание с проверенными данными после проверки [code]$validatedData = $request->validate([ 'customer_id' => 'required|integer|exists:users,id', 'request_id' => 'required|integer|exists:requests,id', 'addressInfo.city' => 'required|string|max:255', 'addressInfo.district' => 'required|string|max:255', 'addressInfo.neighborhood' => 'required|string|max:255', 'addressInfo.addressDetail' => 'nullable|string|max:500', 'description' => 'required|string|max:500', 'files.*' => 'nullable|file|mimes:jpeg,png,jpg,pdf|max:2048', ]); $company = getCurrentCompany(); $customer = $company->customers()->findOrFail($validatedData['customer_id']); $request = $customer->requests()->findOrFail($validatedData['request_id']); $photos = []; // File upload processing foreach ($request->files ?? [] as $index => $file) { if ($request->hasFile('files.' . $index)) { $photos[] = [ 'index' => $index, 'file' => $request->file('files.' . $index)->store('keyRequests/photos') ]; } } // Prepare extra data $validatedData['photos'] = $photos; $validatedData['requester_model'] = 'App\Models\Company'; $validatedData['status'] = KeyRequest::getStatuses()[0]; $validatedData['company_id'] = $company->id; $validatedData['request_address_id'] = $request->address->id; $validatedData['deed_id'] = $request->deed->id; // Create key request $createData = Arr::except($validatedData, ['confirmation', 'files', 'redirectToEdit']); $keyRequest = $customer->keyRequests()->create($createData); [/code] 2: Создание запроса напрямую с использованием [code]$validatedData = $request->validate([ 'customer_id' => 'required|integer|exists:users,id', 'request_id' => 'required|integer|exists:requests,id', 'addressInfo.city' => 'required|string|max:255', 'addressInfo.district' => 'required|string|max:255', 'addressInfo.neighborhood' => 'required|string|max:255', 'addressInfo.addressDetail' => 'nullable|string|max:500', 'description' => 'required|string|max:500', 'files.*' => 'nullable|file|mimes:jpeg,png,jpg,pdf|max:2048', ]); $company = getCurrentCompany(); $customer = $company->customers()->findOrFail($validatedData['customer_id']); $request = $customer->requests()->findOrFail($validatedData['request_id']); $photos = []; // File upload processing foreach ($request->files ?? [] as $index => $file) { if ($request->hasFile('files.' . $index)) { $photos[] = [ 'index' => $index, 'file' => $request->file('files.' . $index)->store('keyRequests/photos') ]; } } // Prepare extra data $request['photos'] = $photos; $request['requester_model'] = 'App\Models\Company'; $request['status'] = KeyRequest::getStatuses()[0]; $request['company_id'] = $company->id; $request['request_address_id'] = $request->address->id; $request['deed_id'] = $request->deed->id; // Create key request $keyRequest = $customer->keyRequests()->create($request->except(['confirmation', 'files', 'redirectToEdit'])); [/code] Мои вопросы: [list] [*]Какой метод более безопасен и предпочтителен? [*]Есть ли разница в производительности между этими двумя методами? [*]В целом, в каких ситуациях рекомендуется использовать тот или иной метод? [/list] Спасибо за помощь! Подробнее здесь: [url]https://stackoverflow.com/questions/79142092/validation-and-data-generation-methods-in-laravel-which-method-is-better[/url]