Laravel 从现有数据库表中生成 Model 模型文件
当我们接到老板的需求,或者我们自己头脑发热想把现有的系统使用 laravel 重构一遍,而为了过渡或者兼容现有系统不能动数据库的时候,我们一定恨不得有个工具可以直接帮我们将现有的数据库表直接生成 laravel 的模型文件;而恰好,有几位英雄已经帮我们开发了这个工具,下面介绍一款,能够将数据库表直接生成 laravel 模型文件的利器,那就是:laravel-model-generator,github地址:https://github.com/ignasbernotas/laravel-m...;
安装使用非常简单,就三步:
第一步,命令行进入项目的根目录,输入命令:
composer require ignasbernotas/laravel-model-generator
第二步,在 app/Providers/AppServiceProvider.php 文件的 register 方法里面,加入如下代码:
public function register()
{
if ($this->app->environment() == 'local') {
$this->app->register('Iber\Generator\ModelGeneratorProvider');
}
}
第三步,输入命令:
php artisan make:models
大功告成,看看 app/Models 文件夹下面是不是多了很多模型文件
这个包现在已经过时啦,大家找找其他的包吧
本帖已被设为精华帖!
本帖由 Summer
于 8年前 加精
好东西
已 Star
可以生成migration吗?
@ricoo 可以生成 migration ,请参考这篇文章:教程:Laravel 扩展推荐: DbExporter 逆向 Migration 和 db:seed
@远客 赞!
还可以这样 真不错!
不错!还差一个由Model生成crud的generator :smile:
我们公司也做过系统升级,升级的时候自己写了一套生成 Model,Service 的玩意儿,直不过没开源,哈哈.
试用了一下,还不错,提几个建议哈,别打我.
1.建议读取数据库配置中的表前缀,然后生成 Model 名的时候把前缀去掉一下.否则生成的名字太长了.
2.建议增加数据库的选择.我们一套程序里有时候会操作多个数据库,基本上都需要生成.
@TimJuly 哈哈,是的,提议不错;
另外我还发现了个问题,这个工具生成的模型文件的文件名默认为表名英文单词的单数形式,比如表名后面有个字母 s ,那文件名多半是没有 s 的了,这个可能是老外们的习惯,但是会给我们造成一定的麻烦。我们的直观感觉就是有一些模型文件的文件名和类名是一样的,而有一些模型文件的文件名和类名又不一样,在写代码的时候会感觉困惑;所以我们最好的方式是把模型文件的文件名改为和类名一致;
改动也很简单,找到 vendor\ignasbernotas\laravel-model-generator\src\Commands\MakeModelsCommand.php 这个文件的 generateTable 方法,将其中一行代码:
$name = Pluralizer::singular($this->parseName($prefix . $class));
改为:
$name = $this->parseName($prefix . $class);
即可
@TimJuly 你提的建议的第二点,选择数据库生成模型文件的,我实现了,已经申请代码合并,看原作者什么时候有时间合并代码,或者可以在我的 github 上面看到:https://github.com/tarrin/laravel-model-ge... ,第一点,去掉前缀的就没搞了,这个应该没什么太大关系
这扩展包挺赞
:punch: 超赞
我把代码git下来的,然后第三运行php artisan make:models;时报错,谁来帮我,小白一个啊
PHP Fatal error: Class 'Iber\Generator\ModelGeneratorProvider' not found in /mnt/hgfs/www/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php on line 575
@scenery 用 git 搞下来的代码直接用不行的,你得用 composer ,因为你直接 git ,是没有被设置好自动加载的,composer 会帮你把自动加载这些全部弄好
这玩意和YII2 里面的 gii 真不能比. 感觉还在原始时代.
gii 生成, 不管是自定义model, 多库, 表前缀, 关联model ,全部轻松在web里点击几下就ok了.
而且看得见,还有预览,还有覆盖对比操作.
求助。我用laravel5.1 时按步骤下来没问题的,最近换成5.5.同样是php artisan make:models,他报错the name argument does not exist。郁闷哪里出了问题,怎么感觉这个命令没走啊
@scenery 你的问题解决了吗?? 我现在也是这个问题!!!!
@Reset903 我换了一个三方reliese/laravel
The "name" argument does not exist.
我也是报这个错误 求解