20. Service
public function update(Reservation $reservation, User $user, array $inputs)
{
if ($user->id !== $reservation->user_id) {
throw new PreconditionException('could_not_update');
}
DB::transaction(function () use ($user, $reservation, $inputs) {
$reservation->book->incrementInventory($reservation->quantity);
$this->store($reservation, $user, $inputs);
});
}
21. Service
public function update(Reservation $reservation, User $user, array $inputs)
{
if ($user->id !== $reservation->user_id) {
throw new PreconditionException('could_not_update');
}
DB::transaction(function () use ($user, $reservation, $inputs) {
$reservation->book->incrementInventory($reservation->quantity);
$this->store($reservation, $user, $inputs);
});
}
事前条件の検証
22. Service
public function update(Reservation $reservation, User $user, array $inputs)
{
if ($user->id !== $reservation->user_id) {
throw new PreconditionException('could_not_update');
}
DB::transaction(function () use ($user, $reservation, $inputs) {
$reservation->book->incrementInventory($reservation->quantity);
$this->store($reservation, $user, $inputs);
});
}
ビジネスロジック