讓我們用電子商務方案進行說明: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中文網其他相關文章!