1. Go to this page and download the library: Download carono/yii2-migrate 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/ */
carono / yii2-migrate example snippets
public function tableOptions()
{
return [
'mysql' => 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB'
];
}
public function newTables()
{
return [
'{{%logs}}' => [
'data' => $this->string(),
'@tableOptions' => [
'mysql' => 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=MyISAM'
]
]
];
}
public function safeUp()
{
$this->upNewTables();
}
public function safeUp()
{
$this->downNewTables();
}
public function newColumns()
{
return [
'{{%company}}' => [
'address' => $this->string(),
'is_active' => $this->boolean()
]
];
}
public function safeUp()
{
$this->upNewColumns();
}
public function safeUp()
{
$this->downNewColumns();
}
public function newIndex()
{
return [
'{{%company}}' => [
$this->index()->columns(['name'])->unique(true)
],
];
}
public function safeUp()
{
$this->upNewIndex();
}
public function safeUp()
{
$this->downNewIndex();
}
$company->storagePivot($user, PvCompanyDirector::class, ['hire_at' => '2010-01-01 00:00:00']);
$users = $company->getStoragePivots(PvCompanyDirector::class)); // The list of models that have been added earlier
$company->savePivots($clear); // Save all links added via storagePivot
use yii\db\Migration;
use \yii\db\Schema;
/**
* Class m180712_120503_init
*/
class m180712_120503_init extends Migration
{
use \carono\yii2migrate\traits\MigrationTrait;
public function tableOptions()
{
return [
'mysql' => 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB'
];
}
public function newTables()
{
return [
'{{%logs}}' => [
'data' => $this->string(),
'@tableOptions' => [
'mysql' => 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=MyISAM'
]
],
'{{%user}}' => [
'id' => $this->primaryKey(),
'name' => $this->string(),
'parents' => $this->pivot('{{%user}}') // Create a pivot table on itself
],
'{{%photo}}' => [
'id' => $this->primaryKey(),
'user_id' => $this->integer()
],
'{{%company}}' => [
'id' => $this->primaryKey(),
'name' => $this->string(),
// Create a pivot table {{%pv_company_directors}}
'directors' => $this->pivot('{{%user}}', 'director_id')->columns(
[
'hire_at' => $this->dateTime(),
// A foreign key with SET NULL rule is when you remove data from {{%user}}
'hired_id' => $this->foreignKey('{{%user}}', null)->onDeleteNull()->unsigned()
]
),
'@tableOptions' => [
'mysql' => 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB'
]
],
'{{%pv_company_user_photo}}' => [
// Create a PivotTable of several keys
'company_id' => $this->foreignKey('{{%company}}', null, Schema::TYPE_PK),
'user_id' => $this->foreignKey('{{%user}}', null, Schema::TYPE_PK),
'photo_id' => $this->foreignKey('{{%photo}}', null, Schema::TYPE_PK),
]
];
}
public function newColumns()
{
return [
'{{%company}}' => [
// Create a FK to user
'user_id' => $this->foreignKey('{{%user}}'),
// Create a pivot table employees
'users' => $this->pivot('{{%user}}')->tableName('{{%employees}}')
]
];
}
public function newIndex()
{
return [
'{{%company}}' => [
$this->index()->columns(['name'])->unique(true)->length(10)
],
];
}
public function safeUp()
{
$this->upNewTables();
$this->upNewColumns();
// Add a FK to an existing column
$this->alterColumn('{{%photo}}', 'user_id', $this->foreignKey('{{%user}}'));
$this->upNewIndex();
$this->createIndex(null, '{{%user}}', 'name');
}
public function safeDown()
{
$this->dropIndexByColumn('{{%user}}', 'name');
$this->downNewIndex();
// Remove the FK on the column name
$this->dropForeignKeyByColumn('{{%photo}}', 'user_id');
$this->downNewColumns();
$this->downNewTables();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.