You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9 Seeder报错:TypeError array_merge()参数#2需为数组,传入整数

错误原因与修复方案

问题1:工厂类调用方式错误

你在OrderSeeder.php里错误地使用Order::factory()创建OrderItem实例。Laravel中每个模型对应专属工厂类,Order::factory()的第一个参数是创建数量(int类型),但你传入了OrderItem::class,导致Laravel将类名解析为无效参数,内部执行array_merge时触发类型错误。

修复后的OrderSeeder.php:

public function run()
{
    Order::factory()->count(30)->create()
        ->each(function (Order $order) {
            // 改用OrderItem专属工厂类创建数据
            OrderItem::factory(random_int(1, 5))->create([
               'order_id' => $order->id,
            ]);
        });
}

问题2:Faker方法参数错误

OrderItemFactory.php中price字段使用的numberBetween()方法需要传入两个整数参数(最小值和最大值),但你写的10.100是单个浮点数,导致方法调用失败。

如果需要整数价格,修复后的OrderItemFactory.php:

public function definition()
{
    return [
        'product_title' => $this->faker->text(30),
        'price' => $this->faker->numberBetween(10, 100), // 修正为两个整数参数
        'quantity' => $this->faker->numberBetween(1, 5),
    ];
}

如果需要带小数的价格(例如保留两位小数),改用randomFloat()方法:

public function definition()
{
    return [
        'product_title' => $this->faker->text(30),
        'price' => $this->faker->randomFloat(2, 10, 100), // 生成10-100之间、保留两位小数的价格
        'quantity' => $this->faker->numberBetween(1, 5),
    ];
}

内容的提问来源于stack exchange,提问作者Mustafa Bayram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 02:03:58