本地化 Faker\Factory 在 Laravel 中无法正常工作。

3
我有一个Post模型,其中包含以下字段:
post_id
post_title
post_content
post_content_full
author

现在我想使用laravel的seeder和model factory来创建假的fa_IR本地化数据并插入到posts表中。
为此,我在database/factories/ModelFactory.php中编写了以下内容:
$factory->define(App\Post::class, function (Faker\Generator $faker) {
        return [
            'post_title'        => $faker->sentence,
            'post_content'      => $faker->paragraph,
            'post_content_full' => $faker->paragraph(3),
            'author'            => $faker->name
        ];
    });

然后我创建了一个名为PostsTableSeeder的类,代码如下:

use Illuminate\Database\Seeder;

class PostsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run ()
    {
        factory(App\Post::class, 5)->create();
    }
}

AppServiceProvider.php 中添加以下代码到 register 函数中:
$this->app->singleton(FakerGenerator::class, function () {
        return FakerFactory::create('fa_IR');
    });

但是在运行种子后,Laravel使用默认语言环境(en_US),忽略了fa_IR

我不知道还能做什么。

更新:

即使我在vendor/fzaninotto/faker/src/Faker/Factory.php中将DEFAULT_LOCALE常量更改为fa_IR,也没有任何变化。


你可以尝试使用->address()方法吗?可能是因为你正在使用的函数在fa_IR语言中不受支持。 - user1897253
是的,当使用地址时它工作了。这是否意味着在fa_IR语言中不支持paraphraph - undefined
是的,很遗憾,我认为可以自定义段落,但那似乎不太方便。 - user1897253
4个回答

2

并非所有的faker方法都被每种语言支持,根据快速查阅文档所述,CompanyAddress提供程序在fa_IR本地化中得到了支持。


1
我在哪里可以找到支持的提供商? - undefined
2
请访问A.B.Developer - user1897253

2

试一下这种方式

$factory->define(App\Post::class, function () {
    $faker = Faker\Factory::create('fa_IR');

    return [
        'post_title'        => $faker->sentence,
        'post_content'      => $faker->paragraph,
        'post_content_full' => $faker->paragraph(3),
        'author'            => $faker->name
    ];
});

它有相同的结果。 - undefined
1
请将以下与编程相关的内容从英文翻译成中文。只返回翻译后的文本:您可以参考此链接https://github.com/fzaninotto/Faker/tree/master/src/Faker/Provider/fa_IR - undefined
有一个名为text的提供者,但当我使用text()方法时,它使用默认的本地化。 - undefined

0

首先运行这个

php artisan make:factory PostFactory

像这样做

$faker = \Faker\Factory::create();

然后像这样使用

    $sub_g->name = $faker->name();
    $sub_g->country = $faker->country();
    $sub_g->state = $faker->state;

等你用上再感谢我。


0
你需要在你的应用配置文件中更改faker的语言环境。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接