2016-09-27 82 views
0

我的表结构是: id | parent_id |名称。 我的菜单模式一对多的关系是:如何在Laravel中将一对多关系多数据插入到同一个表中?

  public function childMenus() { 
      return $this->hasMany(‘App\Menu’, ’parent_id’); 
      } 

     public function parentMenus() { 
     return $this->belongsTo(‘App\Menu’, ‘parent_id’); 
     } 

我创造与子menus.For例如菜单,我必须设置“上级菜单”有三个孩子menus.For这个我创建了一个表格四个输入领域。

<form> 
    <input type="text" name="parent"> 
    <input type="text" name="child[]"> 
    <input type="text" name="child[]"> 
    <input type="text" name="child[]"> 
    </form> 

现在我想用它的子菜单保存父菜单的同时再寄一次试图将它们保存在数组,但它不是在Laravel工作。 也请说明保存这些数据的控制器方法。 在此先感谢

+0

创建主菜单,并保存它,您可以创建子菜单和保存( - >保存( ))你拿到子菜单ID并将其附加到主菜单'$ mainmenu-> childMenus() - >附加($ submenu-> id);' –

回答

0

您可以使用saveMany方法将多个孩子附加到父母。

// Assuming whatever goes into the text box goes in the "name" field. 
$parent = new \App\Parent(); 
$parent->name = \Input::get('name'); 
$parent->save(); 

$children = []; 
foreach (Input::get('child') as $child) { 
    $children = new \App\Child([ 
     'name' => $child 
    ]); 
} 

$parent->childMenus()->saveMany($children); 
0

我发现我的question.Here我张贴的解决方案......

$parent_menu = $request->input('parent'); 
    $parent = Menu::create(['name' => $parent_menu]); 
    $parent->save(); 
    $child_menus = $request->input('child'); 
    foreach($child_menus as $child_menu) { 
    $child = $parent->pages()->create(['name' => $child_menu]); 
    $child->save(); 
    } 
相关问题