File: /home/aliazzsr/api.crm.vqode.com/migrations/m180306_172704_quickFixes4.php
<?php
use yii\db\Migration;
use app\models\core\CompanyType;
use app\models\core\Project;
use app\components\BaseModel;
use yii\helpers\ArrayHelper;
use app\models\core\Company;
use app\models\core\Influencer;
/**
* Class m180306_172704_quickFixes4
*/
class m180306_172704_quickFixes4 extends Migration
{
/**
* {@inheritdoc}
*/
public function safeUp()
{
$this->addColumn(Project::tableName(), 'order_at', $this->timestamp()->defaultValue(null)->comment('Order date'));
$this->addColumn(Project::tableName(), 'next_action_at', $this->timestamp()->defaultValue(null)->comment('Next action date'));
$this->addColumn(Project::tableName(), 'efv', $this->double()->defaultValue(null)->comment('Estimated flooring value'));
$this->addInfluenceTable();
$this->addColumn(Company::tableName(), 'influencer_id', $this->integer()->defaultValue(null)->comment('FK Influencer'));
$this->addColumn(Company::tableName(), 'linkedin', $this->boolean()->notNull()->defaultValue(false)->comment('LinkedIn'));
}
protected function addInfluenceTable()
{
$columns = [
'id' => $this->primaryKey(),
'name' => $this->string()->notNull()->unique(),
'description' => $this->text(),
];
$this->createTable(Influencer::tableName(), $this->addModifiers($columns));
}
protected function addModifiers($columns)
{
$modifiers = [
BaseModel::CreatedAt_Attribute => $this->timestamp()->defaultValue(null)
->comment('timestamp record created'),
BaseModel::UpdatedAt_Attribute => $this->timestamp()->defaultValue(null)
->comment('timestamp record last time updated'),
BaseModel::CreatedId_Attribute => $this->integer()->defaultValue(null)
->defaultValue(0)->comment('user created the record'),
BaseModel::UpdatedId_Attribute => $this->integer()->defaultValue(null)
->defaultValue(0)->comment('user updated the record'),
];
return ArrayHelper::merge($columns, $modifiers);
}
/**
* {@inheritdoc}
*/
public function safeDown()
{
$this->dropColumn(Project::tableName(), 'efv');
$this->dropColumn(Project::tableName(), 'next_action_at');
$this->dropColumn(Project::tableName(), 'order_at');
$this->dropColumn(Company::tableName(), 'linkedin');
$this->dropColumn(Company::tableName(), 'influencer_id');
$this->dropTable(Influencer::tableName());
}
}