boktoso-enterprise / laravel-model-doc
Laravel 模型 PHPDoc 生成器
v0.0.4
2023-08-21 15:04 UTC
Requires
- php: ^8.0
- doctrine/dbal: ^2.9|^3.0
- illuminate/console: ^8.0|^9.0|^10.0
- illuminate/database: ^8.0|^9.0|^10.0
- illuminate/support: ^8.0|^9.0|^10.0
- phpowermove/docblock: ^4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- orchestra/testbench: >=5.0
- phpstan/phpstan: ^0.12.99|^1.0
- phpunit/phpunit: ^8.0|^9.0
- romanzipp/php-cs-fixer-config: ^3.0
This package is auto-updated.
Last update: 2024-09-21 17:27:06 UTC
README
从 romanzipp/Laravel-Model-Doc 分支出来
为 Laravel 模型生成 PHPDoc 注释,包括 数据库列、关系、访问器、查询作用域 和 工厂。
内容
安装
composer require boktoso-enterprise/laravel-model-doc --dev
配置
将配置复制到配置文件夹
php artisan vendor:publish --provider="boktoso-enterprise\ModelDoc\Providers\ModelDocServiceProvider"
用法
php artisan model-doc:generate
有关更多特定用例,请参阅 配置文件。
准备你的模型
- 添加相应的 表名
- 添加返回 类型 的 关系 方法
- 添加返回 类型 的 访问器 方法
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; class MyModel extends Model { protected $table = 'models'; // 1. Add the corresponding table name public function teams(): HasMany // 2. Add relation methods return types { return $this->hasMany(Team::class); } public function getNameAttribute(): string // 3. Add accessor methods return types { return ucfirst($this->name); } }
示例
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** * @property string $id * @property string $title * @property string $pretty_title * @property string|null $icon * @property int $order * @property bool $enabled * @property array $children * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * * @property \Illuminate\Database\Eloquent\Collection|\App\Models\Team[] $teams * @property int|null $teams_count * * @method static \Illuminate\Database\Eloquent\Builder whereTeamName(string $name) * * @method static \Database\Factoies\MyUserFactory<self> factory($count = null, $state = []) */ class MyUser extends Model { use HasFactory; protected $table = 'users'; protected $casts = [ 'children' => 'array', ]; public function teams(): HasMany { return $this->hasMany(Team::class); } public function scopeWhereTeamName(Builder $builder, string $name) { $builder->where('name', $name); } public function getPrettyTitleAttribute(): string { return ucfirst($this->title); } protected static function newFactory() { return new \Database\Factoies\MyUserFactory(); } }
设置自定义路径
您可以使用 usePath
静态方法为生成器设置自定义基本路径。
use Illuminate\Support\ServiceProvider; use BoktosoEnterprise\ModelDoc\Services\DocumentationGenerator; class AppServiceProvider extends ServiceProvider { public function register() { DocumentationGenerator::usePath(fn () => base_path('app/Models')); } }
有关更多特定用例,请参阅 配置文件。
使用详细模式
如果在生成模型文档时遇到错误,您可以使用 --v
选项获取有关错误的更多信息。
php artisan model-doc:generate -v
指定要更新的模型
如果在生成模型文档时遇到错误,您可以使用 --v
选项获取有关错误的更多信息。
php artisan model-doc:generate --model={modelClass}
自定义数据库类型
如果(在详细模式下)您收到类似 Unknown database type enum requested
的错误,您可以在 Laravel 的 database.php
配置文件中添加该自定义类型映射。Laravel 使用 Doctrine DBAL 包进行数据库类型。您可以在 这里 找到支持的类型列表。Laravel 在 这里 提供了 timestamp
类型映射的示例。
以下是 database.php
配置文件中 enum
类型映射的示例
'dbal' => [ 'types' => [ 'enum' => Doctrine\DBAL\Types\StringType::class, ], ],
测试
SQLite
./vendor/bin/phpunit
MariaDB
需要 Lando。
lando start
lando phpunit