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 于 7年前 加精
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 20
Summer

好东西

7年前 评论
Lonexw

已 Star

7年前 评论

可以生成migration吗?

7年前 评论

还可以这样 真不错!

7年前 评论

不错!还差一个由Model生成crud的generator :smile:

7年前 评论
TimJuly

我们公司也做过系统升级,升级的时候自己写了一套生成 Model,Service 的玩意儿,直不过没开源,哈哈.

试用了一下,还不错,提几个建议哈,别打我.

1.建议读取数据库配置中的表前缀,然后生成 Model 名的时候把前缀去掉一下.否则生成的名字太长了.

2.建议增加数据库的选择.我们一套程序里有时候会操作多个数据库,基本上都需要生成.

7年前 评论

@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);

即可

7年前 评论

@TimJuly 你提的建议的第二点,选择数据库生成模型文件的,我实现了,已经申请代码合并,看原作者什么时候有时间合并代码,或者可以在我的 github 上面看到:https://github.com/tarrin/laravel-model-ge... ,第一点,去掉前缀的就没搞了,这个应该没什么太大关系

7年前 评论
Destiny

:punch: 超赞

7年前 评论
颠倒的玉石

我把代码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

6年前 评论

@scenery 用 git 搞下来的代码直接用不行的,你得用 composer ,因为你直接 git ,是没有被设置好自动加载的,composer 会帮你把自动加载这些全部弄好

6年前 评论

这玩意和YII2 里面的 gii 真不能比. 感觉还在原始时代.
gii 生成, 不管是自定义model, 多库, 表前缀, 关联model ,全部轻松在web里点击几下就ok了.
而且看得见,还有预览,还有覆盖对比操作.

6年前 评论
颠倒的玉石

求助。我用laravel5.1 时按步骤下来没问题的,最近换成5.5.同样是php artisan make:models,他报错the name argument does not exist。郁闷哪里出了问题,怎么感觉这个命令没走啊

6年前 评论

@scenery 你的问题解决了吗?? 我现在也是这个问题!!!!

5年前 评论
颠倒的玉石

@Reset903 我换了一个三方reliese/laravel

5年前 评论
Ywwwwww_

The "name" argument does not exist.
我也是报这个错误 求解

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!