我已经构建了我的模型工厂,并且运行良好,但是,生成的句子、单词和其他字符串位于
Latin
中,并且我搜索了以下解决方案(对我不起作用):
ModelFactory.php
$factory->define(App\Models\User::class, function (Faker\Generator $faker)
{
$faker->locale = "en_US"; // nothing changed
return [
.....
];
}
AppServiceProvider.php,甚至DatabaseServiceProvider.php
$this->app->singleton(\Faker\Generator::class, function () {
return \Faker\Factory::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)
在做一些改变之前我必须运行一些东西吗?
我需要帮助,我已经陷入了困境!
更新:
当我在 User 模型上运行工厂时,它以 AppServiceProvider 中的语言环境运行,默认情况下它是真正的英语,但是,我在
ModelFactory.php
中的 User 下获得的另一个模型是仅包含拉丁语结果的模型。
这是两者的代码:
// English, settable
$factory->define(App\Models\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => bcrypt(str_random(10)),
'remember_token' => str_random(10),
];
});
// Obligately Latin
$factory->define(App\Models\Application::class, function (Faker\Generator $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 包没有为此提供开箱即用的解决方案,但就其价值而言,有一个针对此限制的“黑客”解决方法。
你不会得到漂亮的句子,但如果你使用Faker的company->catchPhrase和company->bs方法,你可以串起一些相当幽默的英语句子,即使它们没有任何意义。但如果你纯粹是在寻找英语单词串而不关心它们的内容,那么利用这两种方法可能会帮助你!
在 Laravel 中,我使用以下代码为新闻网站的种子文章制作了一些漂亮的英文标题:
$title = ucwords($faker->catchPhrase .' '.$faker->bs);
还有 realText() 和 realTextBetween() ,如下所述:https://fakerphp.org/formatters/#fakerprovideren_ustext
realText($maxNbChars = 200, $indexSize = 2)
// "And yet I wish you could manage it?) 'And what are they made of?' Alice asked in a shrill, passionate voice. 'Would YOU like cats if you were never even spoke to Time!' 'Perhaps not,' Alice replied."
realTextBetween($minNbChars = 160, $maxNbChars = 200, $indexSize = 2)
// "VERY short remarks, and she ran across the garden, and I had not long to doubt, for the end of the bottle was NOT marked 'poison,' it is right?' 'In my youth,' Father William replied to his ear."