43 lines
1.3 KiB
PHP
43 lines
1.3 KiB
PHP
<?php
|
||
|
||
namespace Database\Factories;
|
||
|
||
use App\Models\StoreOrderItemModel;
|
||
use Illuminate\Database\Eloquent\Factories\Factory;
|
||
|
||
/**
|
||
* 门店订单明细工厂(order_id / store_id / product_id 需调用方指定;
|
||
* amount 未显式指定时按 price × quantity 自动计算;无需 Faker)
|
||
*
|
||
* @extends Factory<StoreOrderItemModel>
|
||
*/
|
||
class StoreOrderItemModelFactory extends Factory
|
||
{
|
||
protected $model = StoreOrderItemModel::class;
|
||
|
||
public function definition(): array
|
||
{
|
||
return [
|
||
'order_id' => 0,
|
||
'store_id' => 0,
|
||
'product_id' => 0,
|
||
'product_name' => '测试商品',
|
||
'product_spec' => '500g/袋',
|
||
'price' => number_format(random_int(100, 5000) / 100, 2, '.', ''),
|
||
'quantity' => number_format(random_int(100, 10000) / 100, 2, '.', ''),
|
||
'weight' => 0,
|
||
'amount' => 0,
|
||
'remark' => '',
|
||
];
|
||
}
|
||
|
||
public function configure(): static
|
||
{
|
||
return $this->afterMaking(function (StoreOrderItemModel $item): void {
|
||
if ((float) $item->amount === 0.0 && (float) $item->price > 0 && (float) $item->quantity > 0) {
|
||
$item->amount = bcmul((string) $item->price, (string) $item->quantity, 2);
|
||
}
|
||
});
|
||
}
|
||
}
|