2016-06-13 28 views
1

Ich möchte meine Seedateien getrennt halten. zum Beispiel UsersTableSeeder.php, PostsTableSeeder.php und sie dann in den Haupt Seeder-Datei aufrufen (DatabaseSeeder.php):Wie werden Seed-Dateien in Laravel getrennt und sauber gehalten?

Beispiel:

use Illuminate\Database\Seeder; 

class DatabaseSeeder extends Seeder 
{ 

    public function run() 
    { 
     $this->call(UsersTableSeeder::class); 
     $this->call(PostsTableSeeder::class); 
    } 
} 

usersTableSeeder.php:

<?php namespace App\Seeds; 

    use Illuminate\Database\Seeder; 
    use App\User; 

    class UserTableSeeder extends Seeder { 

     public function run() 
     { 
      //DB::table('users')->delete(); 

      // user1 
      User::create(array(
       'name' => 'ahmad', 
       'email' => '[email protected]', 
       'password' => 'ahmad' 
      )); 
     } 
    } 

meine UsersTableSeeder.php und PostsTableSeeder.php Dateien sind in dem gleichen Verzeichnis, das DatabaseSeeder.php ist.

sollte ich psr-4 autoloading verwenden? Wie?

+0

Funktioniert das, was Sie gepostet haben, nicht? – ceejayoz

+0

Es gibt mir: [ReflectionException] Class UsersTableSeeder existiert nicht! in der Konsole –

+0

Und die Datei 'database/seeders/UsersTableSeeder.php' existiert mit genau diesem Dateinamen, und sie enthält eine' Klasse UsersTableSeeder extends Seeder' Deklaration? Laravels Standard-Composer-Setup sollte diese bereits automatisch laden. https://github.com/laravel/laravel/blob/master/database/seeds/DatabaseSeeder.php – ceejayoz

Antwort

0

Möglicherweise müssen Sie composer dump-autoload ausführen. Es hat für mich funktioniert.

Als Randnotiz wäre es sauberer, PSR-4 für Seeds und Migrationen zu verwenden (Tests machen das schon).