2016-04-05 22 views
3

私は3つのテーブルのユーザーロールとrole_userを持っています。そのテーブルに、雄弁を使って最小限のクエリでレコードを挿入したいと思います。 insertationの私の現在のコード上記のコードで同時に複数のレコードを複数のレコードに挿入する

User::create([ 
     'name' => 'admin', 
     'email' => '[email protected]', 
     'password' => bcrypt('admin123'), 
    ]); 

    //create default roles while installation of application 
    $roles = array(
     array('name' => 'admin', 'display_name' => 'Administrator User', 'description' => 'system admin user'), 
     array('name' => 'registered', 'display_name' => 'Registered User', 'description' => 'free user') 
    ); 
    foreach ($roles as $key => $role) 
    { 
     Role::create($role); 
    } 

    //relation between users and roles 

    User::find(1)->roles()->attach(1); 

私はpivot table(role_user)にレコードを挿入し、2つのロールを作成し、ユーザーを作成しています。私は知ってほしいと思う何か別の方法は、私は1つの雄弁なクエリと同時にこれらのテーブルにレコードを挿入するか、または他のより良い方法がありますか?

答えて

1

残念ながら、複数のテーブルに同時に行を挿入することはできません。

ベスト何私は考えることができることということです:あなたは2つのクエリ保存この例では

$user = User::create([ 
      'name'  => 'admin', 
      'email' => '[email protected]', 
      'password' => bcrypt('admin123'), 
     ]); 

     //create default roles while installation of application 
     $roles = [ 
      ['name' => 'admin', 'display_name' => 'Administrator User', 'description' => 'system admin user'], 
      ['name' => 'registered', 'display_name' => 'Registered User', 'description' => 'free user'] 
     ]; 
     Role::insert($roles); 

     //relation between users and roles 
     $user->roles()->attach(1); 

:役割を挿入するときに、2つの代わりに、

  1. Laravelは一つだけinsertクエリを呼び出すと、
  2. Laravelは、代わりに変数を使用してデータベースからUserを選択しません。
関連する問題