Maison >développement back-end >tutoriel php >Optimisation de la création de données d'usine avec la méthode de recyclage de Laravel

Optimisation de la création de données d'usine avec la méthode de recyclage de Laravel

百草
百草original
2025-03-06 02:08:09846parcourir

Optimizing Factory Data Creation with Laravel's recycle Method

Le système d'usine de Laravel propose une méthode puissante recycle pour une création efficace de données. Cette méthode est particulièrement utile lors de la création de structures de données complexes avec des relations interconnectées, en évitant l'instanciation du modèle redondant. La méthode recycle réutilise les instances de modèle existantes sur plusieurs appels d'usine, augmentant considérablement les performances.

illustrons avec un scénario de commerce électronique pour les tests:

<?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);
    }
}

Cet exemple montre comment recycle rationalise la création d'une base de données de test. Au lieu de créer à plusieurs reprises des instances Store, Category et Product, la méthode recycle les réutilise, entraînant une exécution de test plus rapide et une consommation de ressources réduite. Ceci est particulièrement bénéfique lorsque vous traitez avec de grands ensembles de données ou des relations complexes dans les modèles de votre application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn