При выполнении задачи на реализацию корзины, проект-менеджер написал в требованиях реализовать нумерацию заказов начиная от 5000. Проект реализован на Symfony 1.4 и требовалось решить данный вопрос с использованием его же средств.
На помощь нам приходит механизм миграций.
Возможно, данное решение не совсем правильное, но позволило решить "проблему".
Вцелом, все сводится к тому, что нам нужно сгенерировать новую миграцию, самостоятельно написать ее и накатить.
Приступим.
Генерируем миграцию:
Исходный код самой миграции будет выглядеть следующим образом:
<?php class MigrationNameExample extends Doctrine_Migration_Base { public function up() { $conn = Doctrine_Manager::getInstance()->getCurrentConnection(); $q = 'ALTER TABLE order AUTO_INCREMENT = 5000'; $r = $conn->execute($q); } public function down() { $conn = Doctrine_Manager::getInstance()->getCurrentConnection(); $q = 'ALTER TABLE order AUTO_INCREMENT = 1'; $r = $conn->execute($q); } }
И в конце — накатываем:
Кстати, если вдруг соберетесь откатывать миграцию — учитывайте, что автоинкремент устанавливается только в том случае, если в таблице максимальный id у поля будет меньше, чем требуемое значение автоинкремента. Собственно, то же самое касается и накатывания миграций.