簡體   English   中英

在Laravel 5.2中更改工廠路徑

[英]Change factories path in Laravel 5.2

我試圖將自己的工廠目錄更改為自定義路徑,所以我正在使用它,就像在laracasts線程中看到的那樣

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');
            });
    }
}

新路徑有效,新目錄中的我的工廠文件已加載。 但是現在當我嘗試使用php artisan migrate:refresh --seed上的播種機工廠時php artisan migrate:refresh --seed我正在

[InvalidArgumentException]未知的格式化程序“名稱”

來自工廠定義內的$ faker實例:

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

所有格式化程序都會出現此錯誤,而不僅僅是名稱。

問題出在哪兒? 在我改變路徑之前,工廠運轉良好。

我暫時找不到答案,所以也許這會對某人有所幫助。

在服務提供商中,加載到工廠的其他路徑。 這樣,Laravel不僅可以在默認文件夾中查找工廠,還可以在自定義文件夾中查找工廠。

use Illuminate\Database\Eloquent\Factory;
...
  public function boot() {
    $this->registerEloquentFactoriesFrom(__DIR__ . '/../Database/Factories');
}


protected function registerEloquentFactoriesFrom($path) {
    $this->app->make(Factory::class)->load($path);
}

__DIR__是您的提供程序所在目錄的路徑。我的目錄結構如下所示。

src
 |    
 +-- Providers
 |  |  
 |  +-- CustomServiceProvider.php
 |    
 +-- Database
 |  |  
 |  +-- Factories

當然,不同的方法也適用。

https://github.com/caffeinated/modules/issues/337上找到

好吧,終於我找到了使它工作的方法:

<?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);
        });
    }
}

app->make可以達到目的:

$ APP->使(FakerGenerator ::類)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM