Search code examples
phptypeerrorlaravel-9laravel-seedinglaravel-factory

Laravel 9 - Seeder | TypeError array_merge(): Argument #2 must be of type array, int given


I have two tables named Order and OrderItem. While creating data in the Order table, I am trying to enter data into the OrderItem table at the same time. The codes are as follows;

OrderSeeder.php

public function run()
{
    Order::factory()->count(30)->create()
        ->each(function (Order $order) {
            Order::factory( OrderItem::class, random_int(1, 5))->create([
               'order_id' => $order->id,
            ]);
        });
}

OrderFactory.php

public function definition()
{
    return [
        'first_name' => $this->faker->name(),
        'last_name' => $this->faker->lastName(),
        'email' => $this->faker->email(),

    ];
}

OrderItemFactory.php

public function definition()
{
    return [
        'product_title' => $this->faker->text(30),
        'price' => $this->faker->numberBetween(10.100),
        'quantity' => $this->faker->numberBetween(1, 5),
    ];
}

Solution

  • When I updated the page like this, the problem was solved.

    OrderSeeder.php

    public function run()
    {
        Order::factory(10)
            ->create()
            ->each(function ($order) {
                OrderItem::factory(random_int(1,3))
                    ->create([
                        'order_id' => $order->id,
                    ]);
            });
    }
    

    You can use it as a resource when you encounter a similar error..