Download the PHP package zhangyu0310/eloquent-model-generator without Composer
On this page you can find all versions of the php package zhangyu0310/eloquent-model-generator. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download zhangyu0310/eloquent-model-generator
More information about zhangyu0310/eloquent-model-generator
Files in zhangyu0310/eloquent-model-generator
Package eloquent-model-generator
Short Description Eloquent Model Generator
License MIT
Informations about the package eloquent-model-generator
Eloquent Model Generator
Eloquent Model Generator is a tool based on Code Generator for generating Eloquent models.
说明
这个仓库是从原开发者那边fork的,基于版本1.3.7
由于开发中遇到了一些小问题,对源码进行了少量修改。
修改如下:
- 工具会默认忽略表的主键,不会将其添加到
$fillable
字段中。(原因应该是大部分使用者的数据库主键是Auto Increment )
我目前的项目中,这个字段并不是自增的,如果不将主键增加到$fillable
中,没办法使用fill($request->all())
之类的方法直接填充。
解决办法:
我增加了一个参数
--pk-fillable
(Primary Key fillable),是一个VALUE_NONE
。 指定了这个参数后,主键也会被添加到$fillable
中。
- 工具在检查外键关系时,会扫描其它的表(
table-name
指定之外的表)
在这个时候,如果其它表中的列,有一些很特殊的类型,例如bit
类型。程序就会抛出异常,没有办法正常工作。我发现这个问题,是因为这边使用了Liquibase
生成数据库表,而Liquibase
会生成一张名为databasechangeloglock
的表:
根本原因是调用DBAL
的listTables()
时,对于其不支持的类型(bit
类型)抛出的异常。
解决办法:
我这里的解决办法比较简单粗暴,仅适合没有使用外键的业务。(从一个前数据库开发人员的角度来说,外键还是能不用就不用,效率很差,而且很多分布式数据库不支持外键)
--ignore-fk
(Ignore Foreign Key),是一个VALUE_NONE
。指定了这个参数后,工具会跳过外键关系的检查。
- 这个可以算是一点点小特性。生成的model,它头部会有字段的说明。我在这个说明后面加了数据库表列上的COMMENT。会生成类似这样的model文件:
不过这个功能需要配合我Git下的 Code Generator 仓库里的代码生成器使用。(也是修改了一点点内容)
Installation
Step 1. Add Eloquent Model Generator to your project:
Step 2. Register GeneratorServiceProvider
:
If you are using Laravel version 5.5 or higher this step can be omitted since this project supports Package Discovery feature.
Step 3. Configure your database connection.
Usage
Use
to generate a model class. Generator will look for table with name users
and generate a model for it.
table-name
Use table-name
option to specify another table name:
In this case generated model will contain protected $table = 'user'
property.
output-path
Generated file will be saved into app
directory of your application and have App
namespace by default. If you want to change the destination and namespace, supply the output-path
and namespace
options respectively:
output-path
can be absolute path or relative to project's app
directory. Absolute path must start with /
:
/var/www/html/app/Models
- absolute pathModels
- relative path, will be transformed to/var/www/html/app/Models
(assuming your project app directory is/var/www/html/app
)
base-class-name
By default generated class will be extended from Illuminate\Database\Eloquent\Model
. To change the base class specify base-class-name
option:
backup
Save existing model before generating a new one
If User.php
file already exist, it will be renamed into User.php~
first and saved at the same directory. After than a new User.php
will be generated.
Other options
There are several useful options for defining several model's properties:
no-timestamps
- addspublic $timestamps = false;
property to the modeldate-format
- specifiesdateFormat
property of the modelconnection
- specifies connection name property of the model
Overriding default options globally
Instead of spcifying options each time when executing the command you can create a config file named eloquent_model_generator.php
at project's config
directory with your own default values. Generator already contains its own config file at Resources/config.php
with following options:
You can override them by defining model_defaults
array at eloquent_model_generator.php
:
Registring custom database types
If running a command leads to an error
it means that you must register your type <ANY_TYPE>
with Doctrine.
For instance, you are going to register enum
type and want Doctrine to treat it as string
(You can find all existing Doctrine's types here). Add next lines at your config/eloquent_model_generator.php
:
Usage example
Table user
:
Command:
Result:
All versions of eloquent-model-generator with dependencies
illuminate/support Version ^5.0 || ^6.0|| ^7.0 || ^8.0
doctrine/dbal Version ^2.5 || ^3.0
zhangyu0310/code-generator Version ^1.0