我有一个包含以下字段的帖子模型:
post_id
post_title
post_content
post_content_full
author
现在我想使用laravel sedders和模型工厂来创建假的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
。
我不知道还能做什么。
更新:
即使我在DEFAULT_LOCALE
const vendor/fzaninotto/faker/src/Faker/Factory.php
更改为fa_IR
也没有任何变化。
答案 0 :(得分: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
];
});
答案 1 :(得分:1)
并非所有faker方法都支持所有语言,从文档的快速查询中可以看出,Company
本地化支持Address
和fa_IR
提供商
答案 2 :(得分:0)
您需要在应用配置文件中更改伪造的语言环境。