2015-09-15 18 views
6

の複数の行が複数のこのような行(またはこのようなもの)を挿入することが可能ですかと思いまして:Laravel 5シーダー - DB

<?php 

use Illuminate\Database\Seeder; 

class SettingTableSeeder extends Seeder 
{ 
    /** 
    * Run the database seeds. 
    * 
    * @return void 
    */ 
    public function run() 
    { 
     DB::table('settings')->insert(
      [ 
       'key' => 'username', 
       'value' => 'testusername' 
      ], 
      [ 
       'key' => 'password', 
       'value' => 'plain' 
      ] 
     ); 
    } 
} 

私はテーブルセッティングの列と私のデータベースでを持ってキー&値

上記のコードの問題は、彼が最初のものだけを挿入することです。

答えて

30

のように保存したバルクのために雄弁からinsertメソッドを使用することができますので、次のようになります。ラッピング配列

DB::table('settings')->insert([ 
    [ 
     'key' => 'username', 
     'value' => 'testusername' 
    ], 
    [ 
     'key' => 'password', 
     'value' => 'plain' 
    ] 
]); 

お知らせ。

あなたは今実際にはメソッドに2つの別の配列を送信しています。

+0

私はこれを試してみましたが、「列が見つかりません:1054不明な列が「フィールドリスト」に「0」あります」 – Samay

1

あなたはあなたが別の配列であなたの配列をラップする必要が

Settings::insert([[ 
      'key' => 'username', 
      'value' => 'testusername' 
     ], 
     [ 
      'key' => 'password', 
      'value' => 'plain' 
     ]]); 
+0

これは失敗します、あなたが実際に(配列(...)を挿入 '送っているように、アレイ(...)) '。挿入には配列の配列が必要です。 –

+0

おかげさまで@ ChrisMagnussen.is ok? –

+0

うん、そうすべきだ! –

0

ただ、DB ::テーブルコードを使用すると、runメソッド内で好きなだけをrepeate !:

DB::table('settings')->insert(
      [ 
       'key' => 'username', 
       'value' => 'testusername1' 
      ] 
     ); 

DB::table('settings')->insert(
      [ 
       'key' => 'username', 
       'value' => 'testusername2' 
      ] 
     ); 

DB::table('settings')->insert(
      [ 
       'key' => 'username', 
       'value' => 'testusername3' 
      ] 
     );