Help for Software Engineers
Engineer software on Exponential: architecture, the request cycle, caching, testing, quality gates and maintainability.
85 pages
Start here
Read these pages in this order.
- Software engineers: start here Where software engineers start who evaluate, architect, operate, review or contribute to Exponential as a s...
- Add a database table A migration that creates a table of the site's own on every engine from a share/db_schema.dba definition, w...
- Migrations The start of everything about migrations in Exponential 6.0.15 - schema and content changes written once as...
- Migrations versus migrating a site The word migration means two different jobs in the Exponential documentation - migrations (schema and conte...
- Create or change a content class A migration that creates the content class news_article with its attributes and class group, the same way o...
- Change content in bulk A migration that walks every object of a class in batches, publishes a new version of each one that needs t...
Good to know
-
Migrations for software engineers
The migration model of Exponential 6.0.15 for engineers - ordered, recorded, checksum-guarded, captioned and committed changes - its architecture next to the .dba schema files and the upgrade steps, the design rules for…
-
Migrations
The start of everything about migrations in Exponential 6.0.15 - schema and content changes written once as files under version control and applied to every installation of a site in the same order, with a caption…
-
Schema changes and migrations
How a database schema change reaches every installation of Exponential - the .dba schema files for new installations, upgrade steps that exp:upgrade applies to every installation of the kernel or an extension, and…
-
Testing migrations: check, simulate, diff and CI
Four layers of tests for migrations - the lint without a database, the dry run, the simulation with a diff on PostgreSQL or SQLite, and a PHPUnit test on a throwaway SQLite database - and how to run them in CI.
-
Deploying with migrations: CI/CD and GitHub Actions
Run migrations as part of every deploy - the order of the steps, a complete GitHub Actions workflow that checks pull requests and deploys over SSH, the exit codes a pipeline acts on, the installation lock, and runs…
-
Reviewing a migration in code review
A checklist for reviewing a migration in a pull request - the file and header, the order, plan(), up() and down(), engines and transactions, ids that differ between installations, personal data, and what the reviewer…
Search by topic
Each button lists the pages of one topic for Software Engineers.
Key pages
All pages for Software Engineers- Team workflow with git: branches, conflicts and order How several developers write migrations on branches without stepping on each other - timestamps and order, requires for real dependencies...
- Captions and rollback in practice Walk through the ways back after a migration run - the automatic restore after a failure, rolling back a whole run, one migration with it...
- Upgrade step or migration? When a change belongs in an upgrade step that exp:upgrade applies to every installation of the kernel or an extension, and when in a migr...
- Coming from Doctrine Migrations For developers who know Doctrine Migrations from Symfony projects - every Doctrine command and class mapped to its Exponential 6 counterp...
- Coming from the Kaliop migration bundle For developers who used the Kaliop eZ Migration Bundle (ezmigrationbundle) on eZ Platform and Ibexa projects - its commands, files and ta...
- When a migration fails: troubleshooting by symptom Troubleshooting migrations by what you see - a failed run, a refused run, a migration that does not run or runs where it should not, a he...
- Migrations: frequently asked questions Short answers to the questions people ask about migrations in Exponential 6.0.15 - what they are for, how they differ from upgrades and s...
- Add a column or an index A migration that adds a column with a default and an index to an existing table on every SQL engine, through the engine's own schema hand...
- Add a class attribute A migration that adds the attribute subtitle to the class news_article at the right position, gives every existing object the new field,...
- Fix data A migration that corrects wrong rows - names with stray spaces, addresses over http - with a pure function that the plan, the run and a t...
Related audiences
Free documentation: use it to help yourself and others
This help is free documentation, licensed under the GNU Free Documentation License 1.3 or later. You may use it, share it and improve it:
- Study it Read any page as often as you like, for any purpose.
- Copy it and share it Give pages to other users, on paper or as files. Keep the copyright notice, the license notice and a copy of the license with every copy.
- Translate, adapt and improve it Share your version under the same license, with the original notices and a note of what you changed.
- Cite it Refer to a page by its title and its address in the help, or its file in the doc directory.
- Contribute fixes back Use "Edit on GitHub" on any page. Changes are accepted under the same license, so they stay free for everyone.
Exponential Copyright © 1998-2026 Exponential Foundation and 7x