Doctrine

Entities and Migrations

All entities are stored in app/Entities under the app\Entities namespace, some of these entities are in nested namespaces where they are more specific to different areas of the system.

Whe making any changes to Doctrine definitions you will need to generate a new migration and then commit that migration before the changes will be reflected. All migrations generated by Doctrine can be reversed and stepped through as needed, it is recommended that migrations be squashed after a feature is complete in to one migration to better manage versions.

Once an entity is updated to generate a migration:

php artisan doctrine:migrations:diff

This command will do a diff against the current state of the database and create the changes in a Doctrine migration file located in:

database/migrations/VersionYEARMONTHDAYHOURMINUTE.php

To commit this migration to the database:

php artisan doctrine:migrations:migrate

This will bring you to the latest available migration. Following on from this, regenerate the Doctrine entity proxy objects (used for lazy loading) php artisan doctrine:generate:proxies

!! Note Doctrine proxies are NOT versioned at this moment in time as they polluted git commits, this will need to be changed to prevent issues when deploying to production in the future.

TL;DR

1
2
3
php artisan doctrine:migrations:diff
php artisan doctrine:migrations:migrate
php artisan doctrine:generate:proxies