X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> ЛП: миграции в yii2, работа с базой данных
fedornabilkin
fedornabilkin
Topic Starter сообщение 6.2.2018, 23:25; Ответить: fedornabilkin
Сообщение #1


Миграции - это хорошо. Миграции можно накатывать, откатывать и перезагружать.
Yii2 предоставляет хороший инструмент для работы с миграциями через консоль. Для работы с БД, необходимо настроить подключение в файле common/config/main-local.php После инициализации приложения это файл будет сгенерирован и надо только подставить свои значения (название БД, юзер, пароль). Пока используйте редактор vim, потом будем работать в PhpStorm.


Для того, чтобы создать в БД таблицу с необходимыми полями, создаем файл миграции. Переходим в корень сайта и выполняем команду:

cd /var/www/site.dev
php yii migrate/create create_news_table

yii спросит разрешения о создании файла миграции в /var/www/site.dev/console/migrations/m180206_190613_create_news_table.php (название файла будет отличаться), соглашаемся вводом команды (Y) и файл создан со следующим содержанием. Можно посмотреть командой cat /var/www/site.dev/console/migrations/m180206_190613_create_news_table.php Чтобы не набирать руками имя файла полностью, используйте часть имени файла и клавишу tab. Набрали первые символы, нажали таб и консоль подставит.

Развернуть/Свернуть


<?php

use yii\db\Migration;

/**
* Handles the creation of table `news`.
*/
class m180206_190613_create_news_table extends Migration
{
/**
* @inheritdoc
*/
public function up()
{
$this->createTable('news', [
'id' => $this->primaryKey(),
]);
}

/**
* @inheritdoc
*/
public function down()
{
$this->dropTable('news');
}
}



Теперь мы можем создать таблицу в БД, если выполним команду (отработает метод up() созданного класса)

php yii migrate

Для удаления таблицы из БД делаем откат миграции командой

php yii migrate/down

В процессе разработки часто приходится добавлять/удалять некоторые поля из существующей таблицы. Если таблица еще не заполнена строками или эти данные не важны, то можно отредактировать метод up() (добавить/удалить поле) и перезагрузить миграцию. Следующая команда сначала выполнить метод down(), а затем метод up(), таким образом, существующая таблица сначала удалиться, а затем снова будет создана.

php yii migrate/redo

Если нет возможности удалить существующую таблицу, то надо создавать еще один файл миграции, который добавит/удалит поле в таблице или сделает что-то еще.

Возможность использования миграций упрощает жизнь разработчику (особенно при разработке в команде), помогает вести контроль над изменением структуры базы данных и немного еще :) Подробнее о миграциях в yii2.


Сообщение отредактировал fedornabilkin - 6.2.2018, 23:44
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
Topic Starter сообщение 17.2.2018, 23:31; Ответить: fedornabilkin
Сообщение #2


Переходим в корень проекта и выполняем команду на создание файла миграции. Обратите внимание, что в команде можно указать поля.

cd /var/www/site.dev
php yii migrate/create create_post_table --fields=title:string,content:text,created_at:integer,updated_at:integer 

Затем идем в шторм, в директорию console\migrations\ выкачиваем файлы с сервера (правый клик Deployment->Download ...), находим файл m180217_184300_create_post_table.php (цифры в названии будут отличаться) и открываем его для ознакомления. 
Развернуть/Свернуть


<?php

use yii\db\Migration;

/**
* Handles the creation of table `post`.
*/
class m180217_184300_create_post_table extends Migration
{
/**
* @inheritdoc
*/
public function up()
{
$this->createTable('post', [
'id' => $this->primaryKey(),
'title' => $this->string(),
'content' => $this->text(),
'created_at' => $this->integer(),
'updated_at' => $this->integer(),
]);
}

/**
* @inheritdoc
*/
public function down()
{
$this->dropTable('post');
}
}
 



Выполняем миграцию, чтобы создать таблицу с полями в БД.

php yii migrate

Консоль спросит подтверждения на выполнение миграций и перечислит файлы миграций, которые еще не были выполнены.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pozitron123
pozitron123
сообщение 16.4.2018, 14:17; Ответить: pozitron123
Сообщение #3


(fedornabilkin @ 7.2.2018, 02:25) *
yii спросит разрешения о создании файла миграции

 У меня что-то не спрашивает:

 0db3c0ac39cd.jpg


А этот фаил у меня пустой:

(fedornabilkin @ 7.2.2018, 02:25) *
common/config/main-local.php
 
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
Topic Starter сообщение 16.4.2018, 15:04; Ответить: fedornabilkin
Сообщение #4


pozitron123, Сделай php init и инициализируй Development.
А вообще он у тебя не пустой, потому что консоль ругается на то, что не может найти базу с названием yii2advanced. Это название прописывается по умолчанию.
Потом, когда настроишь шторм, можно будет заменить данные в environments/dev/common/config/main-local.php, чтобы после инициализации не изменять данные доступа.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pozitron123
pozitron123
сообщение 16.4.2018, 16:31; Ответить: pozitron123
Сообщение #5


(fedornabilkin @ 16.4.2018, 18:04) *
@pozitron123, Сделай php init и инициализируй Development. А вообще он у тебя не пустой, потому что консоль ругается на то, что не может найти базу с названием yii2advanced. Это название прописывается по умолчанию. Потом, когда настроишь шторм, можно будет заменить данные в environments/dev/common/config/main-local.php, чтобы после инициализации не изменять данные доступа.
 
Я так и не понял что нужно сделать запустил php init и что дальше?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
Topic Starter сообщение 16.4.2018, 17:57; Ответить: fedornabilkin
Сообщение #6


pozitron123,  так в консоль смотри и делай, что она предлагает. Там надо будет нажать 0 и потом y.
Сначала выбираешь dev или prod, а потом подтверждаешь свой выбор. На локалке всегда выбираешь Development, чтобы можно было смотреть логи, запросы в БД, отправляемые письма и т.д. Плюс подробный стэк, при возникновении ошибок.
На удаленном серваке всегда выбираешь Production, чтобы пользователи не видели подробностей при ошибках и т.д.
Соответственно, после инициализации, в зависимости от режима (dev или prod), сгенерируются разные файлы конфигурации. Шаблоны этих файлов лежат в environments/*

Третий раз уже об этом пишу!


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
15 yaroslav89 6847 8.4.2024, 17:17
автор: spoyer_ru
Открытая тема (нет новых ответов) BANZAI Partners – новый рекламодатель с пустой базой игроков. RevShare до 50%
0 BANZAI_Partners 676 27.3.2024, 14:44
автор: BANZAI_Partners
Открытая тема (нет новых ответов) ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ
[Чарджбек|Рекавери|Возврат]
9 Leado 3893 9.2.2024, 16:04
автор: baza0013
Открытая тема (нет новых ответов) Нужна работа
0 filatd 739 12.1.2024, 17:08
автор: filatd
Открытая тема (нет новых ответов) Работа: Разная рутина
Работа, разные рутинные задачи: постинг / переговоры / поиск
1 ivanshargin 959 31.10.2023, 17:55
автор: ServersExpert


 



RSS Текстовая версия Сейчас: 20.4.2024, 17:49
Дизайн