【问题标题】:Unable to find provider "Images" with locale "en_US" fzaninotto/Faker when seeding播种时无法找到区域设置为“en_US”fzaninotto/Faker 的提供商“图像”
【发布时间】:2015-07-27 14:13:52
【问题描述】:

我正在尝试使用 fzaninotto/Faker 为我的数据库播种,但是当我运行 php artisan db:seed 时出现以下错误。

[InvalidArgumentException]
无法找到区域设置为“en_US”的提供商“图片”

db:seed [--class[="..."]] [--database[="..."]] [--force]

我有三个应该执行的播种程序类,并且都没有对“图像”的任何引用(没有名为图像的表或字段)。这是我在DatabaseSeeder上的代码

class DatabaseSeeder extends Seeder {

    protected $tables = [
        'users','posts','feedbacks'
    ];
    protected $seeders = [
        'UsersTableSeeder',
        'PostsTableSeeder',
        'FeedbacksTableSeeder'
    ];
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Eloquent::unguard();

        $this->cleanDatabase();
        foreach ($this->seeders as $seedClass)
        {
            $this->call($seedClass);
        }

    }

    private function cleanDatabase()
    {
        DB::statement('SET FOREIGN_KEY_CHECKS=0');
        foreach ($this->tables as $table)
        {
            DB::table($table)->truncate();

        }
        DB::statement('SET FOREIGN_KEY_CHECKS=1');
    }
}

播种机类:

use Faker\Factory as Faker;
use Bicicletas\Feedbacks\Feedback;
use Bicicletas\Users\User;

class FeedbacksTableSeeder extends Seeder {
    public function run()
    {
        $faker = Faker::create();
        $usersIds = User::lists('id');
        $stars = array(1,2,3,4,5);

        foreach(range(1, 10) as $index)
        {
            Feedback::create([
                'user_id' => $faker->randomElement($usersIds, $count=1),
                'rating'  => $faker->randomElement($stars),
                'content' =>$faker->text($maxNbChars = 150),
                'created_at' =>$faker->dateTimeBetween($startDate = '-1 years', $endDate = 'now')

            ]);
        }
    }

}

use Bicicletas\Posts\Post;
use Faker\Factory as Faker;

class PostsTableSeeder extends Seeder {
    public function run()
    {
        $faker = Faker::create();

        foreach(range(1, 20) as $index)
        {
            Post::create([

            'title' => $faker->text($maxNbChars = 50),
            'slug'  =>   $faker->slug,
            'content' =>$faker->text($maxNbChars = 550),
            'created_at'=>$faker->dateTime()
            ]);
        }
    }
}


use Bicicletas\Users\User;
use Faker\Factory as Faker;

class UsersTableSeeder extends Seeder {

    public function run()
    {
        $faker = Faker::create();

        foreach(range(1, 20) as $index)
        {
            User::create([
                'firstname' => $faker->firstName,
                'lastname' =>$faker->lastName,
                'country' =>$faker->country,
                'email' =>$faker->email,
                'avatar'=>"$index.jpg",
                'password' =>'secreto'
            ]);
        }
    }

}

我以前试过这个,它奏效了。你能解释一下这个错误吗?

【问题讨论】:

  • 查看app\config\app.php 并搜索密钥providers。你有任何命名的“图像”吗?此外,编辑您的问题并添加每个 Seeder 类的内容。最后,执行composer dumpautoload 并检查它是否解决了任何问题。
  • 你好@milz谢谢你的帮助,我在app.php中有反射提供者,但问题是如果没有图像服务提供者参与播种这些类,为什么会出现这个错误? 'Intervention\Image\ImageServiceProvider',在 Fakades 中我有 'Images' => 'Intervention\Image\Facades\Image',
  • 我已将 'Images' => 'Intervention\Image\Facades\Image' 重命名为 'Image' => 'Intervention\Image\Facades\Image' 然后自动加载,但仍然是同样的错误

标签: laravel-4 laravel-artisan


【解决方案1】:

播种时抛出错误不是因为它与种子“有关系”,而是因为 Laravel 在播种时执行它是引导程序,并且您对该包有问题。

如果你关注过the official guide,你需要在config/app.php中添加以下内容:

  • 添加到$providers

    'Intervention\Image\ImageServiceProvider'
    
  • 添加$alias

    'Image' => 'Intervention\Image\Facades\Image'
    

既然您已经这样做了(根据您的 cmets),您可能需要发布包的配置:

$ php artisan config:publish intervention/image

有一个GitHub issue 有这个问题的用户。他们中的一些人使用composer dumpautoload 解决了这个问题,而其他人则遇到了问题,因为他们有名为Image 的模型。因此,如果这不能解决您的问题,请查看问题,这可能会有所帮助。

【讨论】:

  • 非常感谢您的帮助。我马上去看看
  • 让我告诉你,我有一个文件夹 app\Bicicletas\Images,它刚刚重命名为 Photos 看看会发生什么,现在错误是“[InvalidArgumentException] 无法找到提供程序“Photos”语言环境 "en_US" db:seed [--class[="..."]] [--database[="..."]] [--force]" 。另一件事是当我尝试执行 php artisan config:publishintervention/image [InvalidArgumentException] 找不到配置时。配置:发布 [--path[="..."]] [--force] 包
  • 我已经删除了那个目录,但仍然遇到同样的错误。也dumpautoload previous
猜你喜欢
  • 1970-01-01
  • 2017-10-24
  • 2020-06-02
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多