0

我有两个 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功能,但我不知道如何使用它。最后对不起我的英语不好

4

0 回答 0