У меня есть таблица заказов с первичным ключом OrderGuid
. Это 32-битный уникальный идентификатор, который используется многими частями системы для отслеживания заказа.Laravel/MySQL: Increment StoreOrderNumber на основе StoreGuid
Это, к сожалению, не самый красивый фрагмент данных, и поэтому было решено, что нам понадобится поле StoreOrderNumber
. Это будет уникальное целое число для каждого StoreGuid
в таблицах заказов. Он также должен быть автоматически увеличивающимся, например. первый заказ, добавленный в таблицу для заданного StoreGuid
, будет присвоен StoreOrderNumber
из 1, следующих 2, затем 3 и т. д. Каждый заказ для определенного StoreGuid
будет соответствовать той же нумерации для StoreOrderNumber
, т.е. начиная с 1, затем 2, 3 , 4 ...
Я полностью нарисовал пробел о том, как я могу это сделать в Laravel и MySQL. Существует опция инкремента, которая может быть добавлена в поле в таблице, но это не учитывает, что нам нужно только увеличивать для каждого нового порядка для определенного StoreGuid
.
+-----------+-----------+------------------+
| OrderGuid | StoreGuid | StoreOrderNumber |
+-----------+-----------+------------------+
| aaa111 | abc123 | 1 |
| bbb222 | abc123 | 2 |
| ccc333 | xyz789 | 1 |
| ddd444 | xyz789 | 2 |
| eee555 | abc123 | 3 |
| fff666 | xyz789 | 3 |
+-----------+-----------+------------------+
Я не понимаю вашу проблему, но я думаю, что мутаторы laravel могут решить вашу проблему: https://laravel.com/docs/5.3/eloquent-mutators#defining-a-mutator Вы можете добавить логику для указанный элемент модели (столбец), например выберите максимальное значение для предоставленных условных выражений, а затем установите для этого элемента значение + 1. – Mishek
Пример таблицы добавлен –