让我们用电子商务方案进行说明:recycle
recycle
此示例演示了如何简化测试数据库的创建。 与其反复创建
和
实例,<?php namespace Tests; use App\Models\Store; use App\Models\Product; use App\Models\Category; use App\Models\Order; use Tests\TestCase; class StoreTest extends TestCase { public function test_sales_report_generation() { // Establish foundational data $store = Store::factory()->create(); $categories = Category::factory(3)->recycle($store)->create(); // Populate categories with products $products = Product::factory(20)->recycle($store)->recycle($categories)->create(); // Generate orders referencing existing products $orders = Order::factory(50)->recycle($store)->recycle($products)->create()->each(function ($order) use ($products) { // Assign random products to each order $orderProducts = $products->random(rand(1, 5)); $order->products()->attach( $orderProducts->pluck('id')->mapWithKeys(function ($id) { return [$id => ['quantity' => rand(1, 5)]]; }) ); }); // Validate report generation $report = $store->generateSalesReport(); $this->assertNotNull($report); $this->assertEquals(50, $report->total_orders); } }>方法会重复使用它们,从而导致更快的测试执行和减少的资源消耗。 在处理应用程序模型中的大型数据集或复杂关系时,这尤其有益。
以上是用Laravel的回收方法优化工厂数据创建的详细内容。更多信息请关注PHP中文网其他相关文章!