2016-02-04 145 views
0

我有一个ParentItem模型Laravel:雄辩关系创建多

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

我有这样的阵列

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

我想添加它作为一个有很多关系。 所以我可以做:

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

有没有什么办法的方式一次创建所有..? 这样的东西:

$parentItem->items()->createMany($items); 
+0

有什么不对的'createMany'方法?此外,你可以像这样得到父模型:'$ parentItem = ParentItem :: first();'。这只会从数据库中检索一个项目。您现在的做法是获取数据库中的所有条目,然后使用PHP获取集合中的第一个项目。 –

回答

0

你可以尝试两条路径。

使用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-related-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_atupdated_at不会自动插入,你必须为他们提供在array如果你有他们在你的桌子上。有关更多信息,请阅读此处。

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