Оптимізація створення даних у Factory за допомогою методу recycle в Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 03 січня, 2025
Laravel надає потужний інструмент для полегшення розробки завдяки методу recycle, який дозволяє ефективно повторно використовувати моделі у різних викликах фабрики. Долучайтеся до нас, щоб дізнатися, як цей метод може покращити продуктивність вашого коду та спростити тестування у складних структурах даних
Система фабрик у Laravel вводить метод recycle, який забезпечує ефективне повторне використання екземплярів моделей під час багатьох викликів фабрик. Ця можливість особливо корисна при створенні складних структур даних із спільними зв'язками. ```php // Основне повторне використання $category = Category::factory()->create(); $products = Product::factory() ->count(3) ->recycle($category) ->create(); ``` Розгляньмо практичний приклад тестування для електронної комерції: ```php create(); $categories = Category::factory() ->count(3) ->recycle($store) ->create(); // Створення продуктів у категоріях $products = Product::factory() ->count(20) ->recycle($store) ->recycle($categories) ->create(); // Генерація замовлень, використовуючи ті ж продукти $orders = Order::factory() ->count(50) ->recycle($store) ->recycle($products) ->create() ->each(function ($order) use ($products) { // Додаємо 1-5 випадкових продуктів до кожного замовлення $orderProducts = $products->random(rand(1, 5)); $order->products()->attach( $orderProducts->pluck('id')->mapWithKeys(function ($id) { return [$id => ['quantity' => rand(1, 5)]]; }) ); }); // Тестування генерації звіту $report = $store->generateSalesReport(); $this->assertNotNull($report); $this->assertEquals(50, $report->total_orders); } } ``` Метод recycle значно покращує продуктивність фабрик, дозволяючи повторно використовувати наявні моделі замість створення нових екземплярів для кожної зв'язки.