2017-02-19 2 views
0

Ich versuche, einen Seeder für meine Tabellenadressen zu erstellen, aber ein Feld meiner Tabelle ist ein Fremdschlüssel. Dieser Fk verweist auf eine Benutzer-ID meiner Tabellenbenutzer.Seeder mit Fremdschlüsselfeld erstellen Laravel 5.3

Meine Seeder Klasse:

class AddressesSeeder extends Seeder 
{ 

    public function run() 
    { 
     $faker = Faker::create(); 
     // following line retrieve all the user_ids from DB 
     $users = User::all()->pluck('id'); 
     foreach(range(1,50) as $index){ 
      $address = Address::create([ 
       'user_id' => $faker->randomElement($users), 
       'street' => $faker->street, 
       'number' => $faker->number, 
       'city' => $faker->city, 
       'state' => $faker->state, 
       'created_at' => $faker->datetime, 
       'updated_at' => $faker->datetime, 
      ]); 
     } 
    } 
} 

Wenn ich die db laufen: Samen, i receave den Fehler:

[Error] Argument 1 bestanden Faker \ Provider \ Base :: randomElements() sein vom Typ Array muss, Objekt gegeben, in C genannt: \ xampp \ htdocs \ projeto \ Anbieter \ fzaninotto \ gefälschte r \ src \ Faker \ Provider \ base.php auf der Leitung 205 und

definiert

Antwort

0

Es ist, weil pluck() wird ein Objekt zurückgeben t, benutze toArray() um es zu parsen.

$users = User::all()->pluck('id')->toArray(); 
+0

Danke Rohan, aber auf diese Weise ist Arbeit auch -> $ users = Benutzer :: zupfen ('id') -> all(); –

+0

danke für die Aktualisierung, ich hatte Erfahrung mit 'list()' (veraltet) –