-
Notifications
You must be signed in to change notification settings - Fork 10
Home
See the video here:
See the navigation on the right!
The first thing I always do is to add this to my development config (see here how to manage different configs for dev/live):
$config->rockmigrations = [
'syncSnippets' => true,
];
This copies the VSCode snippets to the .vscode folder and that makes VSCode show helpful snippets, eg for loading RockMigrations and showing code suggestions:
Then you can simply choose rmf-datetime
for example and get the code to use to create your field:
The rm
snippet lets you quickly access the RockMigrations module with typehints so that you get proper IntelliSense:
To write your first migrations just put this in your site/migrate.php
. The example code uses bd()
calls for dumping data. You need TracyDebugger installed!
/** @var RockMigrations $rm */
$rm = $modules->get("RockMigrations");
bd('Create field + template via RM');
$rm->createField('demo', 'text', [
'label' => 'My demo field',
'tags' => 'RMDemo',
]);
$rm->createTemplate('demo');
$rm->setTemplateData('demo', [
'fields' => [
'title',
'demo',
],
'tags' => 'RMDemo',
]);
Reload your site and you will see the new field and template in the backend and you'll see the message in the tracy debug bar.
Now do a modules refresh (not a regular page reload) and note that the migration run again (the same message appears in tracy). There are two important things to understand here:
- Migrations can run multiple times and will always lead to the same result.
- If you put your migrations in ready.php or an autoload module they will run on every request. This not a good idea as it may slow down your site significantly
Now do a regular page reload. The migration will not run as nothing has changed. A modules refresh does always force to run migrations.