2015-09-15 22 views
6

Zastanawiałem się, czy to możliwe, aby wstawić wiele wierszy, jak to (lub coś takiego):laravel 5 punktowe - wiele wierszy w 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' 
      ] 
     ); 
    } 
} 

Mam ustawienia tabeli w mojej bazy danych z kolumn klucz & wartość.

Problem z powyższym kodem polega na tym, że wstawia tylko pierwszy ....

Odpowiedz

30

musisz owinąć tablic w innej tablicy, tak to będzie wyglądać następująco:

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

Wskazówka tablica owijania .

Co teraz robisz, to wysyłanie dwóch oddzielnych tablic do metody insert().

+0

Próbowałem tego, ale otrzymałem "Nie znaleziono kolumny: 1054 Nieznana kolumna" 0 "w" liście pól "" – Samay

1

można użyć metody insert z wymownym dla luzem zaoszczędzić jak

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

Będzie to fail, jak jesteś rzeczywiście wysyłanie 'wstawić (array (...), array (...)) '. Insert oczekuje tablicy tablic. –

+0

dzięki @ ChrisMagnussen.is to ok teraz? –

+0

Tak, to powinno wystarczyć! –

0

Wystarczy repeate DB :: kod tabeli tyle, ile chcesz wewnątrz metody wykonywania !:

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

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

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