gnulf I’m guessing what you want to do is check and throw an error if the allocated table has already been booked by the customer just right before the reservation is saved. Something like:
$customerTables = // query customer reservation tables
Reservations_model::saving(function($model) use ($customerTables) {
// skip if it is an admin request
if (app()->runningInAdmin())
return;
// Collect array of allocated tables and check with customer tables
if (collect($model->tables)->contains($customerTables))
// throw an exception if allocated table has already been booked.
});