Company и Event. Набор полей сильно разный, но есть общие поля created_by и updated_by, в которых преполагается сохранять ID юзера, который соотв создал (в этом случае и обоих одинаковый ID) или изменил (соотв updated_by может стать иным) запись.
Поскольку это обновление должно производиться всегда и код генерации по идее одинаков - вопрос - как сделать общий код на 2 модели?
То есть куда лучше поместить код, который проверяет в модели наличие полей и в случае их наличия - присваивает текущим юзером. Как я понимаю - сам вызов всё равно вешать в обсервер каждой модели "отдельно" через setCreatedByAttribute/setUpdatedByAttribute... Или нет?
не надо делать общий код моделей.
По вопросу - трейты. По факту, не думаю, что стоит так делать (добавлять к каждой бд отдельно created_by, updated_by), лучше подключить логирование, типо laravel audit, где уже будет сохраняться кто изменил модель, что в ней именно изменил. Будет и проще, и гибче, заодно понять кто менно и что именно изменил.
Покурил трейты - вроде разобрался. В логирование выносить не хочется, так как в других точках по этим полям (и по их комбинации в том числе) будут списки с фильтрованием (как по этим полям, так и по другим) - вынос этих полей в логирование или ещё куда потом сделает построение этих списков делом тяжким.
Ну не знаю, насчёт тяжести, скорее просто усложнит сам запрос.. Но можно будет вытянуть кто менял запись вчера или в прошлом месяце если сейчас ее поменял кто-то другой )) Если же это не нужно, то вероятно да, можно оставить в таблице.
Хистори не важна. Важен "первый и последний автор".
Обсуждают сегодня