Это в значительной степени основано на мнении, но я бы сделал следующее:
php artisan make:request PersonRequest
# app\Http\Request\PersonRequest.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class PersonRequest extends FormRequest
{
public function rules()
{
// Note I'm NOT putting zip an nr into an array.
return [
'name' => 'required',
'zip' => 'required',
'nr' => 'required'
];
}
}
public function store(PersonRequest $request)
{
$person = Person::create($request->validated());
$person->address()->create($request->validated());
}
public function update(PersonRequest $request, Person $person)
{
$person->update($request->validated());
$person->address()->update($request->validated());
}
Вы заметите, что я просто повторно использую validated
, Это потому, что я полагаюсь на атрибуты, которые можно заполнить моделями, и позволяю им убирать ненужные части проверенного запроса.
# Assuming Person's fillable attributes are only 'name'
Person::create(['name' => 'name', 'zip' => 'zip', 'nr' => 'nr'])
# Is the same as Person::create(['name' => 'name']);
Это решение лучше всего подходит для моделей, которые не имеют общих имен атрибутов.