如何在一个表中保存多条记录Laravel雄辩(无关系)

如何在一个表中保存多条记录Laravel雄辩(无关系),laravel,eloquent,Laravel,Eloquent,我希望能够在一个表中的一行中保存多行,我已经了解到这可以使用create方法来完成,但是我在尝试使用该方法时遇到了这个错误 SQLSTATE[HY000]:一般错误:1364字段“名称”没有默认值(SQL:insert intoperson\u roles(updated\u at,created\u at)值(2019-01-3007:46:192019-01-3007:46:19)) 我的代码 $data = [ ['name' => 'actor'],

我希望能够在一个表中的一行中保存多行,我已经了解到这可以使用
create
方法来完成,但是我在尝试使用该方法时遇到了这个错误

SQLSTATE[HY000]:一般错误:1364字段“名称”没有默认值(SQL:insert into
person\u roles
updated\u at
created\u at
)值(2019-01-3007:46:192019-01-3007:46:19))

我的代码

    $data = [
        ['name' => 'actor'],
        ['name' => 'translator'],
        ['name' => 'director'],
        ['name' => 'stageDirector'],
        ['name' => 'costume'],
        ['name' => 'musical'],
        ['name' => 'supportDirector'],
        ['name' => 'photographer'],
        ['name' => 'choreographer'],
    ];

    $personRoles = PersonRole::create($data);
我正在使用Laravel v5.7.21

更新,在我的PersonRole中我添加了这一行

protected $fillable = ['name'];

为了让质量分配工作,但我仍然得到错误。

更新:

就你而言

foreach($data as $datas){PersonRole::create(['name'=>$datas->name])}

或者在模型类中生成函数并调用它

public function createManyRecord(array $records){
    foreach ($records as $record) {
        $this->create($record);
    }
    return $this;
}

您必须使用
insert()
方法,但当您使用insert方法时,必须在
列中手动插入
创建,并在
列中手动更新

$data = [
    [
        'name' => 'actor',
        'created_at' => now(),
        'updated_at' => now(),
    ],
    ['name' => 'translator'],
    ['name' => 'director'],
    ['name' => 'stageDirector'],
    ['name' => 'costume'],
    ['name' => 'musical'],
    ['name' => 'supportDirector'],
    ['name' => 'photographer'],
    ['name' => 'choreographer'],
];

$personRoles = PersonRole::insert($data);

您必须使用
insert
而不是create-

$personRoles = PersonRole::insert($data);

您是否尝试foreach数据,并使用每个数据创建?是的,这将与foreach一起工作,但我认为有一种方法可以使用Eloquent一次创建所有数据。。。我不确定,这就是为什么我想问这里。你在模型的filleble属性中添加了“name”吗?你可以这样添加它-protected$filleble=['name'];foreach($datas形式的数据){PersonRole::create(['name'=>$datas->name])?像这样的?你可以删除数组$data中的名称,只需将其设置为$data=['actor','translator',…]即可。但是
createMany
函数是在有关系的情况下实现的,就像在你的演示中一样,帖子和评论之间存在关系,但我没有任何关系,所以我认为这不是正确且有效的选择<如果没有关系,code>createMany
将不起作用,比如在我的案例中,在你的案例中PersonRole::createMany($data);这给了我一个错误
调用未定义的方法App\PersonRole::createMany()
在数据中使用foreach或在模型中使用foreach函数的唯一方法此解决方案将在created\u at和updated\u at列中添加Null!
$personRoles = PersonRole::insert($data);