corex/lmodel

Laravel 模型(生成器、常量、保留行、phpdoc)

1.1.2 2018-04-25 17:33 UTC

This package is auto-updated.

Last update: 2024-09-26 21:11:35 UTC


README

本软件包的版本控制遵循 http://semver.org/。升级到主要版本可能会破坏向后兼容性。

连接到现有的数据库,并基于现有模式自动生成模型。

  • 支持多连接。
  • 支持通过魔法属性(phpdoc)进行自动完成。
  • 支持自定义方法(保留行)。
  • 支持受保护字段。
  • 支持自定义 "extends"。
  • 支持在魔法属性之后添加额外的字段属性。
  • 支持在模型中构建常量。
  • 支持自定义 "indent"。
  • 支持保留 $timestamps 值。
  • 支持类型为 "enum" 的列(映射为字符串)。

注意:生成已存在的模型将覆盖现有模型,但 "preserve" 标识符以下的每一行都将被保留。

安装

运行 "composer require corex/lmodel --dev"

添加配置文件 config/corex/lmodel.php 并将以下代码添加到其中。根据需要修改它。

return [
    'path' => base_path('app/Models'),
    'namespace' => 'App\Models',
    'addConnection' => true,
    'extends' => \Illuminate\Database\Eloquent\Model::class,
    'indent' => "\t",
    'length' => 120,
    'const' => [
        '{connection}' => [
            '{table}' => [
                'id' => '{id}',
                'name' => '{name}',
                'prefix' => '{prefix}',
                'suffix' => '{suffix}',
                'replace' => [
                    'XXXX' => 'YYYY',
                ]
            ]
        ]
    ]
];

注意:旧配置文件 config/corex.php 仍然支持,但不再推荐。

设置

  • path - 模型保存的位置。
  • namespace - 模型的命名空间。
  • addConnection - 如果应将数据库连接名称应用于命名空间/目录,则为 true/false。名称将自动转换为 PascalCase。
  • extends - 要扩展的类。
  • indent - (可选)用作缩进的字符串,例如 "\t"。默认为4个空格。
  • length - (可选)行中断之前的行长度。用于具有许多字段的表。
  • const - (可选)此部分用于指定应包含表格内容的常量的连接和表格。
  • {connection} - (可选)连接名称。
  • {table} - (可选)表名称。
  • {id} - (必需)获取常量值的字段名称。
  • {name} - (必需)获取常量名称的字段名称。
  • {prefix} - (可选)添加到每个常量名称的前缀。
  • {suffix} - (可选)添加到每个常量名称的后缀。
  • replace - (可选)在常量名称中替换的值。

要注册它并确保仅在开发时可用此选项,请将以下代码添加到 AppServiceProvider@register 方法中。

if ($this->app->environment() == 'local') {
    $this->app->register('CoRex\Laravel\Model\ModelServiceProvider');
}

帮助

php artisan help make:models

参数

  • connection: 从中生成模型的连接名称。它将被添加到命名空间/路径中,以便按连接分隔模型。可以通过将 addConnection 设置为 false 来禁用此功能。指定 "." 以从默认连接生成。
  • tables: 要生成的逗号分隔的表名称。指定 "." 以生成所有表。

选项

  • guarded: 受保护字段的逗号分隔列表。

示例

使用配置生成状态表的模型。

<?php

namespace App\Models\Test;

use Illuminate\Database\Eloquent\Model;

/**
 * @property integer $id [TYPE=INTEGER, NULLABLE=0, DEFAULT=""]
 * @property string $name [TYPE=STRING, NULLABLE=0, DEFAULT=""]
 * @property string $value [TYPE=STRING, NULLABLE=0, DEFAULT=""]
 */
class Status extends Model
{
    // Constants.
    const CONSTANT1 = 1;
    const CONSTANT2 = 2;
    const CONSTANT3 = 3;
    const CONSTANT4 = 4;

    // Attributes.
    public $timestamps = false;
    protected $connection = 'mysql';
    protected $table = 'status';
    protected $fillable = ['id', 'name', 'value'];
    protected $guarded = [];

    /* ---- Everything after this line will be preserved. ---- */

    /**
     * Preserve this method.
     *
     * @return string
     */
    public function preserveThisMethod()
    {
        return 'preserved';
    }
}