2016-04-28 4 views
1

Ich habe zwei ModelleWie Beziehung von Fabriken in Laravel hinzuzufügen

Künstler

Album

Ich versuche, eine Fabrik zu schreiben, die databse wie diese

$factory->define(App\Artist::class, function (Faker\Generator $faker) { 
    return [ 
     'artist_name' => $faker->name($gender = null|'male'|'female'), 
     'followers' => $faker->randomDigitNotNull(), 
     'artist_image'=>$faker->imageUrl($width = 256, $height = 256), 
     'artist_title' =>$faker->word(4), 
     'artist_address' =>$faker->address(), 
     'artist_phone' =>$faker->phoneNumber(), 
     'artist_fb' =>$faker->sentence(4), 
     'artist_description' => $faker->paragraph() 
    ]; 
}); 

$factory->define(App\Album::class, function (Faker\Generator $faker) { 
    return [ 
    'album_name' => $faker->company(), 
    'album_art' => $faker->imageUrl($width = 263, $height = 292), 
    'album_description' => $faker->paragraph($nbSentences = 3, $variableNbSentences = true), 
    'album_mainart' => $faker->imageUrl($width = 1140, $height = 1140), 
    'album_soundcloud' => $faker->company(), 
    'album_youtube' => $faker->company(), 
    'artist_id' => factory(App\Artist::class)->create()->id, 
    ]; 
}); 
Saatgut

und In DatabaseSeeder.php habe ich wie diese

<?php 

use Illuminate\Database\Seeder; 
use Illuminate\Database\Eloquent\Model; 

class DatabaseSeeder extends Seeder 
{ 
    /** 
    * Run the database seeds. 
    * 
    * @return void 
    */ 
    public function run() 
    { 
     Model::unguard(); 
     //DB::table('artists'); 
     // factory(App\Artist::class, 50)->create(); 

     factory(App\Artist::class, 10) 
      ->create() 
      ->each(function($u) { 
       $u->posts()->save(factory(App\Album::class)->make()); 
      }); 

      Model::reguard(); 
    } 
} 

nach php artisan db:seed

ERROR

Call to undefined Methode Illuminate \ Database \ Abfrage \ Builder :: Beiträge()

Jede Idee

Ausführung wie man das macht

Danke

Antwort

0

Die posts() -Methode sollte nicht in Ihrem Artist-Modell definiert werden. Sie sollten eine albums() -Methode haben. Versuchen Sie dies:

factory(App\Artist::class, 10) 
      ->create() 
      ->each(function($u) { 
       $u->albums()->save(factory(App\Album::class)->make()); 
      }); 

Und überprüfen Sie Ihr Artist-Modell.