1. Go to this page and download the library: Download pinkcrab/perique-migration library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
pinkcrab / perique-migration example snippets
class Acme_Migration extends Migration {
/**
* Returns the name of the table.
*
* @e_migration_sample_table';
}
/**
* Defines the schema for the migration.
*
* @param Schema $schema_config
* @return void
*/
public function schema( Schema $schema_config ): void {
$schema_config->column( 'id' )
->unsigned_int( 11 )
->auto_increment();
$schema_config->column( 'user_ref' )
->text( 11 );
$schema_config->column( 'thingy_ref' )
->int( 11 );
$schema_config->index( 'id' )
->primary();
}
/**
* Defines the data to be seeded.
*
* @param array<string, mixed> $seeds
* @return array<string, mixed>
*/
public function seed( array $seeds ): array {
return [
[
'user_ref' => 'ghjuyitjkuiy'
'thingy_ref' => 1325546
],
[
'user_ref' => 'eouroipewrjhiowe'
'thingy_ref' => 897456
]
];
}
}
class Use_Dependency_Migration extends Migration {
protected $config;
public function __construct( App_Config $config ) {
$this->config = $config;
}
protected function table_name(): string {
return $this->config->db_tables('from_app_config');
}
}
// @file plugin.php
// Boot the app as normal and create an instance of Plugin_State_Controller
$app = (new App_Factory())
// setup the app as normal
->default_setup()
// Ensure Plugin Life Cycle is added
->module(Perique_Plugin_Life_Cycle::class)
// Add the Migrations module
->module(
Perique_Migrations::class,
function( Perique_Migrations $module ) {
// Optional key
$module->set_migration_log_key( 'acme_plugin_migrations' )
// Add you migrations
$module->add_migration(Acme_Migration::class)
$module->add_migration(Some_Migration_With_Dependencies::class);
}
)
->boot();
class DI_Migration extends Migration {
/** Services used */
protected Some_Service $some_service;
protected App_Config $config;
/** These would be injected automatically via Perique DI */
public function __construct(Some_Service $some_service, App_Config $config){
$this->some_service = $some_service;
$this->config = $config;
}
/** Gets the table name from the App_Config (Perique Config) */
protected function table_name(): string {
return $this->config->db_tables('from_app_config');
}
/**Defines the schema for the migration. */
public function schema( Schema $schema_config ): void {
$schema_config->column( 'id' )->unsigned_int( 11 )->auto_increment();
$schema_config->index( 'id' )->primary();
$schema_config->column( 'user_ref' )->text( 11 );
$schema_config->column( 'thingy_ref' )->int( 11 );
}
/**
* Defines the data to be seeded. */
public function seed( array $seeds ): array {
return $this->some_service->seed_data();
}
/** Is this table dropped on deactivation (Defaults to false). */
public function drop_on_deactivation(): bool {
return false;
}
/** Drop table on uninstall. (Defaults to false). */
public function drop_on_uninstall(): bool {
return true;
}
/** Should this migration be seeded on activation. (Defaults to true). */
public function seed_on_inital_activation(): bool {
return true;
}
}
/**
* Returns the table name from the apps config.
*
* @return string
*/
protected function table_name(): string {
return $this->config->db_tables('from_app_config');
}
/**
* Defines the schema for the migration.
*
* @param Schema $schema
* @return void
*/
public function schema( Schema $schema ): void{
$schema->column('id')->unsigned_int(12)->auto_increment();
// Define rest of schema
}
/**
* Defines the schema for the migration.
*
* @param array<int, array<string, mixed>> $seeds
* @return array<int, array<string, mixed>>
*/
public function seed( array $seeds ): array {
return [
['columnA' => 'value1', 'columnB' => 1.11],
['columnA' => 'value2', 'columnB' => 2.22],
];
}
/**
* Is this table dropped on deactivation (Defaults to false)
* @return bool
*/
public function drop_on_deactivation(): bool {
return true;
}
/**
* Is this table dropped on uninstall (Defaults to false)
* @return bool
*/
public function drop_on_uninstall(): bool {
return true;
}
/**
* Should this migration be seeded on activation. (Defaults to true)
* @return bool
*/
public function seed_on_inital_activation(): bool {
return true;
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.