我已经建立了我的模型工厂,它工作得很好,但是,生成的句子,单词和其他字符串都在Latin
中,我已经搜索了以下解决方案(不适合我):
-
ModelFactory.php
$factory->define(AppModelsUser::class, function (FakerGenerator $faker) { $faker->locale = "en_US"; // nothing changed return [ ..... ]; }
-
AppServiceProvider.php,甚至DatabaseServiceProvider.php
$this->app->singleton(FakerGenerator::class, function () { return FakerFactory::create('en_US'); });
仍然是非英语的结果,如:Soluta doloremque in consequatur.
奇怪的是,在vendor/fzaninotto/faker/src/Faker/Factory.php
类
第一行是const DEFAULT_LOCALE = 'en_US';
创建public static function create($locale = self::DEFAULT_LOCALE)
我必须在做一些更改之前运行一些东西吗?
我需要帮助,我已经陷入了死胡同!
更新:
当我在用户模型上运行工厂时,它在AppServiceProvider中运行区域设置,默认为真正的英语,但是,我在ModelFactory.php
中在用户下获得的另一个模型是只有拉丁语结果的模型。
的代码如下:
// English, settable
$factory->define(AppModelsUser::class, function (FakerGenerator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => bcrypt(str_random(10)),
'remember_token' => str_random(10),
];
});
// Obligately Latin
$factory->define(AppModelsApplication::class, function (FakerGenerator $faker) {
return [
'title' => $faker->sentence('3'),
'description' => $faker->paragraph,
'field_id' => $faker->numberBetween(1,3),
'published_at' => $faker->dateTimeBetween('-1 years'),
'icon_url' => $faker->imageUrl(256, 256),
'cover_url' => $faker->imageUrl(888, 444),
'android_url' => $faker->url,
'ios_url' => $faker->url,
'windows_url' => $faker->url,
'android_download_count' => $faker->randomDigit,
];
});
我已经比较了这两个模型,没有什么可疑的。
这是Laravel用来生成数据库种子的faker包的一个限制。
"句子"one_answers"段落"都包含在faker的Lorem提供者中。这是唯一的拉丁语言,不能更改为其他语言。
Laravel中包含的Faker包确实没有一个开箱即用的解决方案,但是为了它的价值,有一个'hack'的工作方法来解决这个限制。
你不会得到漂亮的句子,但如果你使用Faker的company->catchPhrase和company->bs方法,你可以把一些非常幽默的英语句子串在一起,即使它们没有任何意义。但如果你只是在寻找英语单词串,而不关心它们的内容,那么使用这两种方法可能会对你有所帮助!
在Laravel中,我使用以下代码为一个新闻网站的种子文章制作了一些漂亮的英文标题:
$title = ucwords($faker->catchPhrase .' '.$faker->bs);