Задача следующая: 2 модели 1. Очередь(Queue), поля id, name 2. Талон (Talon), поля id, queue_id, name(не обязательное, создал сам) Нужно выводить А-1, Б-1, А-2 (т.е. у каждой очереди свою нумерацию талонов) Как решил я на данный момент (метод store контроллера TalonsController в $request приходит queue): PHP: public function store(Request $request) { $talon = Talon::create(['queue_id'=>$request->id]); $number = Talon::where('queue_id','=',$talon->queue->id)->count(); $name = $request->name.'-'.$number; $talon->update(['name' => $name]); return $talon->name; } Подскажите более правильное решение (добавить мутатор или еще что-то), вопрос не срочный проект не масштабный, поэтому работать и так будет, но хотелось бы знать как правильно. Можно не давать развернутый ответ просто указать направление
чтобы просто вычислить поле на стороне PHP - анкестор. чтобы сохранить поле в определенном виде - мутатор. https://laravel.com/docs/5.8/eloquent-mutators#accessors-and-mutators
Сходу мне кажется что в твоей системе не хватает понятия "день". Ведь талончики выдаются в пределах дня, завтра нумерация начнется заново.
@artoodetoo Я лишние поля сюда не тянул, только то, что нужно для этого вопроса. Accessors тут не подойдет, т.к. будет переадрессация талона с очереди в очередь с сохранением имени, засим остается мутатор, но теперь возникает вопрос он при обновлении талона тоже отрабатывать будет или нет? Надо будет почитать внимательно
Сейчас мне стало ещё меньше понятно что ты делаешь, чем вначале ))) Так что, я отваливаю из темы. Походу ты не решил ещё что надо сделать, но уже ищешь как. Попробуй поискать Queue Management System database schema Я думаю, мутаторы здесь рояля не играют. ))) Надо думать о структуре данных, уникальности полей и об идемпотентности API )))