a2workspace/ laravel-model-builder
提供Laravel复杂数据模型生成器
v1.1.1
2021-10-21 06:09 UTC
Requires
- php: ^7.4|^8.0
Requires (Dev)
- orchestra/testbench: 4.x
This package is auto-updated.
Last update: 2024-09-04 13:02:20 UTC
README
ModelBuilder
提供创建复杂数据的模型生成器。
快速开始
一个简单示例
namespace App\ModelBuilders; use App\Models\Product; use A2Workspace\ModelBuilder\ModelBuilder; class ProductBuilder extends ModelBuilder { public function make() { $product = new Product; $product->name = $this->name; $product->price = $this->price; // ... return $product; } public function rules() { return [ 'name' => 'required', 'price' => 'required|int|min:1', ]; } }
安装
composer require a2workspace/laravel-model-builder
编写一个模型生成器
要创建一个新的模型生成器,可以执行make:builder
artisan命令:
php artisan make:builder ProductBuilder
定义如何创建模型
在make()
方法中初始化并定义模型的属性。
class ProductBuilder extends ModelBuilder { public function make(): Product { $product = new Product; $product->name = $this->name; $product->price = $this->price; // ... return $product; } }
修改器方法
ModelBuilder
提供类似于Model
的修改器方法。详细参考官方文档访问器 & 修改器。
class ProductBuilder extends ModelBuilder { public function setPriceAttribute($value) { if (0 >= $value) { throw new InvalidArgumentException('價格必須大於 0'); } $this->attributes['price'] = $value; } }
验证
在create()
时进行验证。
class ProductBuilder extends ModelBuilder { public function rules(): array { return [ // ... ]; } public function messages(): array { return [ // ... ]; } }