Задать вопрос
@Vermut756

Есть в Yii2 (или еще где-то в PHP) возможность автоматически сгенерировать таблицу из класса-модели? Именно так, а не наоборот?

Вот в Yii2 есть класс ActiveRecord. Его паттерн работает именно наоборот - у нас уже есть таблица в БД - он ее преобразует в модель.

А я хочу сделать обратно - сперва создавать класс модель (просто класс с полями), затем с помощью какого-то средства автоматом преобразовать (мигрировать) его в базу данных.

Yii2 поддерживает миграции, можно вызвать такую команду
yii migrate/create create_post_table --fields=title:string,body:text

она создает таблицу с полями.
Но поля приходится задавать таким вот нестандартным способом, а хотелось бы для экономии времени сперва создать класс, задать в нем поля таблицы в виде полей класса, а затем вызвать команду, которая по этому классу создаст таблицу.

То есть хочу нечто вроде POJO (в Java).
Также аналогичное видел в Django (Python).
А вот в Yii2 не вижу...
  • Вопрос задан
  • 253 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
index0h
@index0h
PHP, Golang. https://github.com/index0h
Doctrine2
Ответ написан
Комментировать
dmitriylanets
@dmitriylanets
веб-разработчик
Ответ написан
Комментировать
Insolita
@Insolita
Отчаянная домохозяйка
https://github.com/Insolita/yii2-migrik#annotation... этот плагин вроде похож на то что вам нужно
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Можете написать свой gii генератор, который будет парсить модель и на ее основе создавать миграцию, которая в свою очередь будет создавать таблицу в БД.
Иногда наверное удобно.
Ответ написан
Комментировать
@LAV45
Если вы используете миграции только для создания таблиц то вам пригодится такой модуль. Потребность быстро сгенерировать AR модели возникает на этапе создания проекта. Дальше, на этапе поддержки, я бы не доверял автоматическим генератором, т.к. вы уже рискуете потерять реальные данные.

Но поля приходится задавать таким вот нестандартным способом, а хотелось бы для экономии времени сперва создать класс, задать в нем поля таблицы в виде полей класса, а затем вызвать команду, которая по этому классу создаст таблицу.

А вы попробуйте наоборот.
  1. создайте миграцию
  2. опишите поля в таблицах
  3. добавите индексы
  4. опишите связи между таблицами
  5. проверьте не забыли что ещё
  6. А теперь можно по быстрому наклепать AR моделей, со всеми связями

AR модели в Yii2 не хранят у себя информации о структуре самой таблицы, а получают её от БД.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы