Страница 1 из 1

Проверка если нет базы данных то создать без composer, как сделать?

Добавлено: 2020.03.10, 16:35
riaron
Проверка если нет базы данных то создать без composer, как сделать?
При помощи миграций yii2

Re: Проверка если нет базы данных то создать без composer, как сделать?

Добавлено: 2020.03.11, 15:13
unknownby
Для создания БД используй phpmyadmin, в конфигах прописываешь подключение к БД со всеми наименованиями, паролями, префиксами таблиц.
При помощи миграций работа ведется с самой БД. В плане создания новых таблицы, индексов и т.п.

Re: Проверка если нет базы данных то создать без composer, как сделать?

Добавлено: 2020.03.11, 18:44
riaron
Как сделать для создания таблиц

Re: Проверка если нет базы данных то создать без composer, как сделать?

Добавлено: 2020.03.12, 07:16
maleks
не понятно что вам надо

Re: Проверка если нет базы данных то создать без composer, как сделать?

Добавлено: 2020.03.12, 13:51
yiiliveext
В компонентах консоли

Код: Выделить всё

'components' => [
        'db-manager' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;',
            'username' => 'root',
            'password' => '',
        ],
    ],
Миграция

Код: Выделить всё

class m200312_102754_dbcreate extends Migration
{
    /**
     * {@inheritdoc}
     */
    public function safeUp()
    {
        Yii::$app->get('db-manager')
            ->createCommand("CREATE DATABASE IF NOT EXISTS `demo`;
                             CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
                             GRANT ALL ON `demo`.* TO 'myuser'@'localhost';
                             FLUSH PRIVILEGES;")
            ->execute();
    }

    /**
     * {@inheritdoc}
     */
    public function safeDown()
    {
        echo "m200312_102754_dbcreate cannot be reverted.\n";

        return false;
    }
}

Re: Проверка если нет базы данных то создать без composer, как сделать?

Добавлено: 2020.03.13, 09:35
unknownby
Если всё же интересовала миграция таблицы :D

Код: Выделить всё

use yii\db\Migration;
use yii\db\Schema;
use app\common\models\MyTable;

class m200205_133320_add_my_table extends Migration
{
    private $tableOptions = "COLLATE='utf8_general_ci' ENGINE=MyISAM";
    private $tableName;

    public function init()
    {
        $this->db = MyTable::getDb(); //тут должно быть имя БД
        $this->tableName = MyTable::tableName(); //тут должно быть имя таблицы, которое будет создано в БД
        parent::init();
    }

    public function safeUp()
    {
        $this->createTable($this->tableName, [
            'mytable_id' => Schema::TYPE_PK,
            'first_id' => Schema::TYPE_INTEGER . '(11) DEFAULT NULL',
            'second_id' => Schema::TYPE_INTEGER . '(11) DEFAULT NULL',
        ], $this->tableOptions);
    }

    public function safeDown()
    {
        $this->dropTable($this->tableName);
    }
}
Или колонки в таблицу

Код: Выделить всё

    public function safeUp()
    {
        $this->addColumn($this->tableName, 'new_column', Schema::TYPE_INTEGER . '(11) DEFAULT NULL');
    }

    public function safeDown()
    {
        $this->dropColumn($this->tableName, 'new_column');
    }