Laravel:雄辩的关系创造多重

问题描述 投票:0回答:2

我有一个 ParentItem 模型

$parentItem = ParentItem::get()->first();

我有这个数组

$items = array(
 array(
  'title' => 'test1',
  'desc' => 'test1'
 ),
 array(
  'title' => 'test2',
  'desc' => 'test2'
 )
);

我想添加它,因为 a 有很多关系。 所以我可以这样做:

foreach($items as $item) {
 $parentItem->items()->create($item)
}

有没有办法一次性创建所有内容..? 像这样的东西:

$parentItem->items()->createMany($items);
php laravel collections eloquent
2个回答
7
投票

您可以尝试两种路径。

使用

saveMany
方法:

$parentItem = ParentItem::first();
$items = array(
    new Item(['title' => 'test1','desc' => 'test1']),
    new Item(['title' => 'test2','desc' => 'test2'])
);
$parentItem->items()->saveMany($items)

欲了解更多信息,您可以阅读此处。

https://laravel.com/docs/5.1/eloquent-relationships#inserting-lated-models

使用

insert
方法:

$parentItem = ParentItem::first();
$items = array(
    array('title' => 'test1','desc' => 'test1','parent_item_id' => $parentItem->id),
    array('title' => 'test2','desc' => 'test2','parent_item_id' => $parentItem->id)
);
Item::insert($items);

记住在插入时

created_at
updated_at
不会自动插入,如果您的表格中有它们,您必须在
array
中提供它们。欲了解更多信息,您可以在这里阅读。

https://laravel.com/docs/5.1/queries#inserts


1
投票

目前,您可以使用

createMany
Eloquent 方法来实现这一点。

详细信息在这里:https://laravel.com/docs/9.x/eloquent-relationships#the-create-method

© www.soinside.com 2019 - 2024. All rights reserved.