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

运行php artisan db:seed时CarSeeder无法向MySQL空表插入数据报错

CarSeeder 执行报错修复

你的代码存在3处会直接触发错误的问题:

  • 方法调用主体错误:table()是DB门面提供的方法,不属于Eloquent模型类,你在Cars模型后调用->table('cars')会直接触发方法不存在的报错。如果用模型操作,本身已经绑定了对应数据表,不需要额外调用table()指定表名。
  • 调用了不存在的全局函数:Laravel没有全局的increment()方法,且如果你的id字段是数据库设置的自增主键,插入数据时完全不需要手动传入id值,数据库会自动生成主键id。
  • 多次单条插入属于冗余写法,3条数据可以合并为一次批量插入,执行效率更高。

修正后的可运行代码如下:

<?php

namespace Database\Seeders;

use App\Models\Cars;
use Illuminate\Database\Seeder;

class CarSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        // 模型写法,和你当前引入Cars模型的逻辑匹配
        Cars::insert([
            ['marka' => 'BMW', 'tip' => 'karavan'],
            ['marka' => 'Toyota', 'tip' => 'coupe'],
            ['marka' => 'Mercedes', 'tip' => 'limuzina'],
        ]);

        // 如果你更习惯用DB门面操作,也可以用下面的写法,二选一即可
        // \DB::table('cars')->insert([
        //     ['marka' => 'BMW', 'tip' => 'karavan'],
        //     ['marka' => 'Toyota', 'tip' => 'coupe'],
        //     ['marka' => 'Mercedes', 'tip' => 'limuzina'],
        // ]);
    }
}

补充说明:如果有特殊场景必须手动指定id,不要使用不存在的increment()方法,可以自行维护计数变量,比如初始化$id = 1,每条数据传入'id' => $id++即可,常规自增主键场景不需要做这个操作。

内容的提问来源于stack exchange,提问作者Mislav Novalić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:30:44