laravel-model-builder maintained by a2workspace
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 [
// ...
];
}
}