我有两个 3 模型 Product、Transaction 和 TransactionDetail 关系看起来像这样
- 交易 < 交易详情
- 产品 < 交易详情
< = 有很多
然后我像这样建立工厂laravel工厂
产品厂
class ProductFactory extends Factory
{
public function definition()
{
return [
'name' => $this->faker->colorName,
'stock' => rand(10,100),
'price' => rand(1000,100000)
];
}
}
事务工厂
class TransactionFactory extends Factory
{
public function definition()
{
return [
'transaction_code' => "TR".$this->faker->unique()->numberBetween($min = 1, $max = 50),
'customer_name' => $this->faker->name(),
'total_price' => rand(10000,2000000)
];
}
}
交易细节工厂
class TransactionDetailFactory extends Factory
{
public function definition()
{
$product = Product::inRandomOrder()->limit(1)->first();
$qty = rand(10,100);
return [
'product_id' => $product->id,
'quantity' => $qty,
'price' => ($product->price * $qty),
];
}
}
我像这样在播种机中调用它
class DummySeeder extends Seeder
{
public function run()
{
Product::factory(10)->create();
Transaction::factory()
->has(TransactionDetail::factory()->count(2),'transactionDetails')
->count(5)->create();
}
}
所以我的问题是可以用交易细节total_price
的总和填充交易模型的属性吗?price
我注意到 laravel 有afterCreating
功能,但我不知道如何使用它。最后对不起我的英语不好