Laravel bietet eine leistungsstarke Methode zur effizienten Datenerstellung. Diese Methode ist besonders nützlich, wenn sie komplexe Datenstrukturen mit miteinander verbundenen Beziehungen erstellen und redundante Modell -Instanziierung vermeiden. Die recycle
-Methode wiederverwendet vorhandene Modellinstanzen über mehrere Werksaufrufe hinweg und steigert die Leistung erheblich. 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); } }
die Erstellung einer Testdatenbank optimiert. Anstatt wiederholt recycle
, Store
und Category
Instanzen zu erstellen, wird die Product
-Methode wiederverwendet, was zu einer schnelleren Testausführung und einem verringerten Ressourcenverbrauch führt. Dies ist besonders vorteilhaft, wenn Sie mit großen Datensätzen oder komplizierten Beziehungen innerhalb der Modelle Ihrer Anwendung zu tun haben. recycle
Das obige ist der detaillierte Inhalt vonOptimierung der Fabrikdatenerstellung mit der Recycle -Methode von Laravel.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!