Php 具有多个值的Laravel fluent insert仅插入第一个值

Php 具有多个值的Laravel fluent insert仅插入第一个值,php,laravel,laravel-5.6,Php,Laravel,Laravel 5.6,我正在尝试运行一个单种子类: <?php use Illuminate\Database\Seeder; class CourseTableSeeder extends Seeder { public function run() { DB::table('courses')->insert( ['name' => 'PhD'], ['name' => 'Master'],

我正在尝试运行一个单种子类:

<?php

use Illuminate\Database\Seeder;

class CourseTableSeeder extends Seeder {

    public function run()
    {
        DB::table('courses')->insert(
            ['name' => 'PhD'],
            ['name' => 'Master'],
            ['name' => 'Bachelor'],
            ['name' => 'Foundation'],
            ['name' => 'ESL']
        );
    }

}
我希望看到数据库中的五个值,但是,我只看到第一个“phd”

我试着通过在insert上运行
->toSql()
来调试它,但我认为这是不可能的,我收到了以下错误,因为insert很可能返回布尔值,因此不可链接

[2018-07-23 15:35:45] local.ERROR: Call to a member function toSql() on boolean {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Call to a member function toSql() on boolean at C:\\laragon\\www\
eports\database\seeds\CourseTableSeeder.php:15)

由于我无法通过挖掘框架的源代码轻松了解insert方法是如何工作的,因此我开始怀疑
DB::table('table_name')->insert()
是否通过数组接受多个插入,我设法在框架的测试套件中找到了这方面的示例,例如:

DB::table('posts_tags')->insert([
    ['post_id' => $post->id, 'tag_id' => 200, 'flag' => ''],
    ['post_id' => $post->id, 'tag_id' => 300, 'flag' => 'exclude'],
    ['post_id' => $post->id, 'tag_id' => 400, 'flag' => ''],
]);
资料来源:

所以我猜我没有做错什么。任何关于问题是什么以及如何调试出了什么问题的想法,因为我已经用尽了我所知道的选项。此外,在运行整个过程时,控制台或日志文件中不会显示任何错误

谢谢

您的
insert()
中缺少一些
[]
语法。比较你的

->insert(
  ["name" => "..."]
);
对文件的修改

->insert([
  ["post_id" => "..."]
]);
因此,文档建议传递一个数组,每个要插入的记录都包含一个数组,而实现传递多个数组

->insert([
  ["post_id" => "..."]
]);