itm2018/eloquent-model-generator-for-lumen

Eloquent 模型生成器,基于 asamaru7/eloquent-model-generator 分支

1.0.8 2018-05-11 03:32 UTC

This package is not auto-updated.

Last update: 2024-09-21 14:37:03 UTC


README

Eloquent 模型生成器是一个基于 Code Generator 的工具,用于生成 Eloquent 模型。

安装

步骤 1. 将 Eloquent 模型生成器添加到您的项目中

composer require itm2018/eloquent-model-generator-for-lumen --dev

步骤 2. 注册 GeneratorServiceProvider

'providers' => [
    // ...
    Krlove\EloquentModelGenerator\Provider\GeneratorServiceProvider::class,
];

步骤 3. 配置您的数据库连接。

使用

使用

php artisan krlove:generate:model User

来生成一个模型类。生成器将寻找名为 users 的表并为其生成一个模型。您可以通过提供 table-name 选项来指定另一个表名

php artisan krlove:generate:model User --table-name=user

在这种情况下,生成的模型将包含 protected $table = 'user' 属性。

生成的文件将被保存在应用程序的 app 目录中,并具有 App 命名空间。如果您想更改目标目录和命名空间,分别提供 output-pathnamespace 选项

php artisan krlove:generate:model User --output-path=/full/path/to/output/directory --namespace=Some\\Other\\NSpace

默认情况下,生成的类将扩展自 Illuminate\Database\Eloquent\Model。要更改基类,指定 base-class-name 选项

php artisan krlove:generate:model User --base-class-name=Some\\Other\\Base\\Model

有几个有用的选项可以定义多个模型的属性

  • no-timestamps - 向模型添加 public $timestamps = false; 属性
  • date-format - 指定模型的 dateFormat 属性
  • connection - 指定模型的连接名称属性

您不必每次执行命令时都指定选项,可以创建一个包含您自己的默认值的配置文件,并通过指定 config 选项来传递它。生成器已经包含其自己的配置文件在 Resources/config.php

<?php

return [
    'namespace'       => 'App',
    'base_class_name' => \Illuminate\Database\Eloquent\Model::class,
    'output_path'     => null,
    'no_timestamps'   => null,
    'date_format'     => null,
    'connection'      => null,
];

其值可以被您的自己的配置覆盖(例如,<your-base-dir>/config/eloquent_model_generator.php

<?php

return [
    'namespace'       => 'Some\\Other\\Namespace',
    'base_class_name' => 'Some\\Other\\ClassName',
    'output_path'     => '/full/path/to/output/directory',
    'no_timestamps'   => true,
    'date_format'     => 'U',
    'connection'      => 'other-connection',
];
php artisan krlove:generate:model User --config=<your-base-dir>/config/eloquent_model_generator.php

使用示例

user

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `email` varchar(100) NOT NULL,
  `role_id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `role_id` (`role_id`),
  CONSTRAINT `user_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8

命令

php artisan krlove:generate:model User  --table-name=user

结果

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

/**
 * @property int $id
 * @property int $role_id
 * @property mixed $username
 * @property mixed $email
 * @property Role $role
 * @property Article[] $articles
 * @property Comment[] $comments
 */
class User extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'user';

    /**
     * @var array
     */
    protected $fillable = ['role_id', 'username', 'email'];

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function role()
    {
        return $this->belongsTo('Role');
    }

    /**
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    public function articles()
    {
        return $this->hasMany('Article');
    }

    /**
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    public function comments()
    {
        return $this->hasMany('Comment');
    }
}