2016-04-02 16 views
1

Ich versuche, meine Fabriken Verzeichnis zu einem benutzerdefinierten Pfad zu ändern, so dass ich mit diesem, wie ich in einem laracasts thread sah:ändern Fabriken Weg in Laravel 5.2

use Illuminate\Database\Eloquent\Factory as Factory; 

class FactoryServiceProvider extends ServiceProvider 
{ 
    public function register() 
    { 
      $this->app->singleton(Factory::class, function() { 
       return Factory::construct(new Faker\Generator, app_path() .'/Core/Database/Factories'); 
      }); 
    } 
} 

Der neue Pfad funktioniert, meine Fabrik Dateien innerhalb des neuen Verzeichnisses werden geladen. Aber jetzt, wenn ich versuche, die Fabrik von seeders auf php artisan migrate:refresh --seed zu verwenden, ich bin immer

[InvalidArgumentException] Unbekannter Formatierer "name"

aus der $ faker Instanz in der Fabrik Definition:

$factory->define(User::class, function (Faker\Generator $faker) { 
    return[ 
     'name' => $faker->name, 
     'email' => $faker->freeEmail, 
     'password' => bcrypt($faker->word), 
     'remember_token' => str_random(10) 
    ]; 
}); 

Dieser Fehler tritt bei allen Formatierern auf, nicht nur bei Namen.

Wo ist das Problem? Die Fabrik funktioniert gut, bevor ich den Pfad ändere.

Antwort

1

Okay, schließlich fand ich, wie es funktioniert:

<?php 

use Faker\Generator as FakerGenerator; 
use Illuminate\Database\Eloquent\Factory as EloquentFactory; 
use Illuminate\Support\ServiceProvider; 

class FactoryServiceProvider extends ServiceProvider 
{ 
    public function register() 
    { 
     $this->app->singleton(EloquentFactory::class, function ($app){ 
      $faker = $app->make(FakerGenerator::class); 
      $factories_path = 'Your/Custom/Path/To/Factories'; 
      return EloquentFactory::construct($faker, $factories_path); 
     }); 
    } 
} 

Der app->make funktioniert der Trick:

$ app-> machen (FakerGenerator :: Klasse)