Перейти к содержимому


× Быстрый вопрос
Пользователь месяца
dos1k dos1k 1-й за Май
Очков активности: 1 194 28 тем, 115 сообщений, 4 балла репутации
Сайт: dos1k.ru
ТОП самых активных за этот месяц
  • Фотография Olya23
    #1

    Olya23
    Очков активности: 678 3 темы, 104 сообщения, 4 балла репутации

  • Фотография Rodiola
    #2

    Rodiola (rukodelkovo.ru)
    Очков активности: 414 0 тем, 69 сообщений, 4 балла репутации

  • Фотография maxnik
    #3

    maxnik (konovalovpavel.ru)
    Очков активности: 81 0 тем, 18 сообщений, 3 балла репутации

  • Фотография agrx
    #4

    agrx (key-assort.ru)
    Очков активности: 51 0 тем, 17 сообщений, 2 балла репутации

  • Фотография BLIK
    #5

    BLIK
    Очков активности: 40.5 Вне конкурса за определение пользователя месяца

  • Фотография re-search
    #6

    re-search
    Очков активности: 36 5 тем, 9 сообщений, 1 балл репутации

  • Фотография Андрей WPMasterKZ
    #7

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 34.5 0 тем, 23 сообщения, 1 балл репутации

  • Фотография fedornabilkin
    #8

    fedornabilkin (plohoneponyal.ru)
    Очков активности: 33 0 тем, 11 сообщений, 2 балла репутации

  • Фотография Ixman
    #9

    Ixman (o5cat.ru)
    Очков активности: 24 0 тем, 8 сообщений, 2 балла репутации

  • Фотография Artos
    #10

    Artos
    Очков активности: 21 0 тем, 7 сообщений, 2 балла репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 24.05.2019
  • Яндекс выдача: 12.06.2019
Последние темы

Топ 5 участников по репутации


ЛП: миграции в yii2, работа с базой данных

#1 fedornabilkin

fedornabilkin
  • Модератор
  • 1 165 сообщений
  • Репутация: 199
0

Отправлено 06 Февраль 2018 - 22:25

Миграции - это хорошо. Миграции можно накатывать, откатывать и перезагружать.

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. Набрали первые символы, нажали таб и консоль подставит.

 

Спойлер

 

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

php yii migrate

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

php yii migrate/down

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

php yii migrate/redo

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

 

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


 

 

Сообщение отредактировал fedornabilkin: 06 Февраль 2018 - 22:44

  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#2 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 165 сообщений
  • Репутация: 199

Отправлено 17 Февраль 2018 - 22:31

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

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 yii migrate

Консоль спросит подтверждения на выполнение миграций и перечислит файлы миграций, которые еще не были выполнены.


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#3 pozitron123

pozitron123
  • Пользователь
  • 791 сообщений
  • Репутация: 150

Отправлено 16 Апрель 2018 - 13:17

yii спросит разрешения о создании файла миграции

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

 

 0db3c0ac39cd.jpg

 

 

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

 

common/config/main-local.php
 

  • 0

Fozzy и Beget  - два лучших хостинга для ваших сайтов.



#4 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 165 сообщений
  • Репутация: 199

Отправлено 16 Апрель 2018 - 14:04

@pozitron123, Сделай php init и инициализируй Development.

А вообще он у тебя не пустой, потому что консоль ругается на то, что не может найти базу с названием yii2advanced. Это название прописывается по умолчанию.

Потом, когда настроишь шторм, можно будет заменить данные в environments/dev/common/config/main-local.php, чтобы после инициализации не изменять данные доступа.


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#5 pozitron123

pozitron123
  • Пользователь
  • 791 сообщений
  • Репутация: 150

Отправлено 16 Апрель 2018 - 15:31

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

Я так и не понял что нужно сделать запустил php init и что дальше?


  • 0

Fozzy и Beget  - два лучших хостинга для ваших сайтов.



#6 fedornabilkin

fedornabilkin
    Topic Starter
  • Модератор
  • 1 165 сообщений
  • Репутация: 199

Отправлено 16 Апрель 2018 - 16:57

@pozitron123,  так в консоль смотри и делай, что она предлагает. Там надо будет нажать 0 и потом y.

Сначала выбираешь dev или prod, а потом подтверждаешь свой выбор. На локалке всегда выбираешь Development, чтобы можно было смотреть логи, запросы в БД, отправляемые письма и т.д. Плюс подробный стэк, при возникновении ошибок.

На удаленном серваке всегда выбираешь Production, чтобы пользователи не видели подробностей при ошибках и т.д.

Соответственно, после инициализации, в зависимости от режима (dev или prod), сгенерируются разные файлы конфигурации. Шаблоны этих файлов лежат в environments/*

 

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


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.





Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru