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-11-04 13:24:52 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
的修改器方法。詳細參考官方文件 Accessors & Mutators。
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 [ // ... ]; } }