Обратный инжиниринг или автогенерация сущностей в Laravel?

Я обычно работаю с SF2, а с Doctrine, сущности могут генерироваться автоматически, и если вы строите схему в Soft, как MySQL Workbench, вы можете выполнить Reverse Engineering.

Я новичок в Laravel, так что есть способ сделать обе эти вещи? Я бы использовал Laravel, потому что мне нужно сделать очень маленький проект, но я не хотел писать весь этот код для того, что мы называем "Миграциями", кажется очень скучным, нет?

Так есть способ создать этот материал в Laravel? Может быть, я должен использовать Doctrine в Laravel для этого?

3 ответа

Решение

Если вы хотите сгенерировать файлы миграции из существующей базы данных mysql, вы можете использовать пакет Laravel под названием XCMer / larry-four-generator. Помимо обратного инжиниринга, у него есть масса других функций.

Larry Four - это пакет Laravel 4, предлагающий расширенные функциональные возможности для создания моделей и миграции. Благодаря Ларри вы можете быстро записать схему данных для вашей идеи в простой DSL и генерировать миграции и модели из нее одним щелчком мыши. Ларри также может проанализировать вашу существующую схему данных и сгенерировать для вас магию.

Попробуйте оригинальную лучшую мастер ветку
https://github.com/XCMer/larry-four-generator/tree/master

или мой форк расширенных моделей, предлагающий дополнительную функциональность
https://github.com/XCMer/larry-four-generator/tree/Gadoma-extendedmodels

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

1) Экспортируйте свою схему MySQL

mysqldump -u root -p --no-data dbname > schema.sql

2) Создайте миграцию для использования вашей схемы

php artisan migration:make create_schema

3) Загрузите полную схему

class CreateSchema extends Migration {

    public function up()
    {
        $file = file_get_contents(app_path().'/database/data/full_schema.sql', true);

        DB::unprepared($file);
    }

    public function down()
    {
    }

}

4) После этого, если вам нужно внести какие-либо изменения в вашу схему, просто создайте новые миграции и внесите свои изменения.

Не проверено, но должно работать.

Я создал пару классов, которые могут реконструировать существующую базу данных MySQL: /questions/26522377/laravel-generiruet-modeli-predstavleniya-i-kontrolleryi-iz-bazyi-dannyih-ili-skripta-migratsii/26522399#26522399

Другие вопросы по тегам