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

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
riaron
Сообщения: 97
Зарегистрирован: 2018.12.04, 14:12

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

Сообщение riaron »

Проверка если нет базы данных то создать без composer, как сделать?
При помощи миграций yii2
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

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

Сообщение unknownby »

Для создания БД используй phpmyadmin, в конфигах прописываешь подключение к БД со всеми наименованиями, паролями, префиксами таблиц.
При помощи миграций работа ведется с самой БД. В плане создания новых таблицы, индексов и т.п.
riaron
Сообщения: 97
Зарегистрирован: 2018.12.04, 14:12

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

Сообщение riaron »

Как сделать для создания таблиц
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

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

Сообщение maleks »

не понятно что вам надо
Yii2 universal module sceleton - for basic and advanced templates
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

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

Сообщение 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;
    }
}
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

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

Сообщение 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');
    }
Ответить