Обратный инжиниринг или автогенерация сущностей в 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