Это глупая идея, потому что может привести к столкновениям, а также денормализовать данные и добавляет больше сложности, чем требуется. Я не вижу абсолютно никаких оснований для такого глупого дизайнерского решения. Просто используйте два поля.
Однако, если вам нравится делать глупые вещи, мы пойдем: не используйте автоинкремент в поле БД и напишите свой собственный метод и вызовите его в обратном вызове beforeSave()
, который увеличивает количество записей и добавляет метку времени. Вы должны установить идентификатор вручную и только когда объект является новым.
Проблема, с которой вы столкнетесь, заключается в том, что при удалении записей счет будет неправильным. Если у вас есть [1,2,3] и удалить 2, ваш следующий идентификатор будет снова 3. Таким образом, вам придется хранить общий счет, который когда-либо был сохранен в другом месте. Где и как и особенно надежный - ваша проблема.
Другим решением является использование двух полей, позволяющих DB увеличивать идентификатор и использовать concat() SQL, чтобы объединить их вместе в новое поле с псевдонимом. Или сделайте это using a virtual property of an entity.
Или выполните другое сохранение() после создания записи и объедините оба значения полей и соберите их в третье поле.
Я знаю, но мой клиент хочет от меня .. У меня есть идея для этого .. Что делать, если перед отображением идентификатора прилагает созданное поле с ним? Будет ли это более легко? –
Как я уже сказал, сохраните их отдельно друг от друга и в этом случае используйте виртуальное поле на сущности или напрямую соедините их с помощью concat() на уровне базы данных. См. Обновленный ответ. – burzum