V
V
Vermut7562016-10-25 08:56:03
Yii
Vermut756, 2016-10-25 08:56:03

Is there a way in Yii2 (or somewhere else in PHP) to automatically generate a table from a model class? That's right, and not vice versa?

Here in Yii2 there is an ActiveRecord class. His pattern works exactly the opposite - we already have a table in the database - it converts it into a model.
And I want to do the opposite - first create a model class (just a class with fields), then using some tool to automatically convert (migrate) it to the database.
Yii2 supports migrations, you can call this command

yii migrate/create create_post_table --fields=title:string,body:text

it creates a table with fields.
But the fields have to be set in such a non-standard way, but to save time, I would like to first create a class, set the table fields in it as class fields, and then call a command that will create a table for this class.
That is, I want something like POJO (in Java).
I also saw the same in Django (Python).
But I don't see it in Yii2...

Answer the question

In order to leave comments, you need to log in

5 answer(s)
I
index0h, 2016-10-25
@index0h

Doctrine2

D
dmitriy, 2016-10-25
@dmitriylanets

Propel2, Spot

Елена Степанова, 2016-10-25
@Insolita

https://github.com/Insolita/yii2-migrik#annotation... этот плагин вроде похож на то что вам нужно

Максим Тимофеев, 2016-10-25
@webinar Куратор тега Yii

Можете написать свой gii генератор, который будет парсить модель и на ее основе создавать миграцию, которая в свою очередь будет создавать таблицу в БД.
Иногда наверное удобно.

L
LAV45, 2016-10-31
@LAV45

Если вы используете миграции только для создания таблиц то вам пригодится такой модуль. Потребность быстро сгенерировать AR модели возникает на этапе создания проекта. Дальше, на этапе поддержки, я бы не доверял автоматическим генератором, т.к. вы уже рискуете потерять реальные данные.
And you try the opposite.
AR models in Yii2 do not store information about the structure of the table itself, but receive it from the database.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question