2015-09-15 24 views
6

Mi chiedevo se è possibile inserire più righe come questo (o qualcosa di simile):laravel 5 Seeder - più righe nella 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' 
      ] 
     ); 
    } 
} 

Ho un impostazioni della tabella nel mio database con colonne chiave & valore.

Il problema con il codice sopra è che inserisce solo il primo ....

risposta

30

Hai bisogno di avvolgere gli array in un altro array, quindi sarebbe simile a questa:

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

Avviso matrice wrapping .

Quello che stai facendo ora è in realtà l'invio di due array separati al metodo insert().

+0

Ho provato questo ma ottenendo "Colonna non trovata: 1054 Colonna sconosciuta '0' in 'lista campi'" – Samay

1

è possibile utilizzare il metodo di inserimento da eloquenti per massa salvare come

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

questo fallirà, come si sta effettivamente inviando 'inserire (array (...), di matrice (...)) '. L'inserto si aspetta una matrice di matrici. –

+0

grazie @ ChrisMagnussen.è ok adesso? –

+0

Sì, dovrebbe farlo! –

0

Proprio Ripetere le il :: codice della tabella DB quanto si vuole all'interno del metodo run !:

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

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

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