基于 / laravel-fluent
以流利的方式定义模型属性。自动将属性转换为原生类型。
v0.0.7
2022-06-10 17:26 UTC
Requires
- php: ^8.0
- illuminate/support: ^9.0
Requires (Dev)
- nunomaduro/larastan: ^2.1.10
- orchestra/testbench: ^7.5
- pestphp/pest: ^1.2
- pestphp/pest-plugin-laravel: ^1.2
README
该包提供了一种表达式的“流利”方式来定义模型属性。它自动在运行时构建转换,并为模型的属性添加原生自动完成功能。
简介
使用 laravel-fluent
,您可以像定义其他任何类的属性一样定义模型属性。值将根据属性的本地类型转换为相应的类型。
之前
<?php /** * @property Collection $features * @property float $price * @property int $available */ class Product extends Model { protected $casts = [ 'features' => 'collection', 'price' => 'float', 'available' => 'integer', ]; }
之后
<?php class Product extends Model { use Fluent; public Collection $features; public float $price; public int $available; }
安装
此版本支持PHP 8.0。您可以通过composer安装此包
composer require based/laravel-fluent
然后,将 Based\Fluent\Fluent
特性添加到您的模型中
<?php class User extends Model { use Fluent; }
模型属性
定义公共属性。 laravel-fluent
支持所有原生类型和Laravel原始转换
<?php class Order extends Model { use Fluent; public int $amount; public Carbon $expires_at; #[AsDecimal(2)] public float $total; #[Cast('encrypted:array')] public array $payload; }
关系
该包还处理关系。
<?php class Product extends Model { use Fluent; #[Relation] public Collection $features; public Category $category; public function features(): HasMany { return $this->hasMany(Feature::class); } public function category(): BelongsTo { return $this->belongsTo(Category::class); } }
关系方法声明仍然是正确自动完成的必要条件。然而,该包可以自动从属性中解析关系。
<?php class Product extends Model { use Fluent; #[HasMany(Feature::class)] public Collection $features; #[BelongsTo] public Category $category; }
测试
composer test
待办事项
- 迁移生成器
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。