Model Factory 生成拉丁语结果,而不是英语并且不接受任何其他语言环境
Model Factory generating Latin results, not English and not accepting any other locale
我已经建立了我的模型工厂,它运行良好,但是,生成的句子、单词和其他字符串在 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
class
第一行是
const DEFAULT_LOCALE = 'en_US';
具有创建功能public static function create($locale = self::DEFAULT_LOCALE)
我必须先 运行 做一些改变吗?
我需要帮助我已经走到了尽头!
更新:
当我 运行 User 模型上的工厂 运行s with locale sat in AppServiceProvider 并且默认它是真正的英语,但是,我在 [=18 中的 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,
];
});
我比较了这两个模型,没有任何可疑之处。
这是 faker 包的限制,Laravel 用于生成数据库种子。
"sentence" 和 "paragraph" 都包含在 faker 的 Lorem 提供程序中。这完全是拉丁语,无法更改为其他语言。
Laravel 中包含的 Faker 软件包确实没有针对此问题的 out-of-the-box 解决方案,但值得一提的是,有针对此限制的 'hack' 解决方法。
你不会得到漂亮的句子,但是如果你使用 Faker 的 company->catchPhrase 和 company->bs 方法,你可以串起一些非常幽默的句子 english-language,即使他们不任何意义。但如果你只是单纯地寻找英文单词串,而不关心其内容,那么利用这两种方法或许能帮到你!
在 Laravel 中,我使用以下代码为新闻网站的种子文章制作了一些漂亮的英文标题:
$title = ucwords($faker->catchPhrase .' '.$faker->bs);
我已经建立了我的模型工厂,它运行良好,但是,生成的句子、单词和其他字符串在 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
class
第一行是
const DEFAULT_LOCALE = 'en_US';
具有创建功能public static function create($locale = self::DEFAULT_LOCALE)
我必须先 运行 做一些改变吗?
我需要帮助我已经走到了尽头!
更新:
当我 运行 User 模型上的工厂 运行s with locale sat in AppServiceProvider 并且默认它是真正的英语,但是,我在 [=18 中的 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,
];
});
我比较了这两个模型,没有任何可疑之处。
这是 faker 包的限制,Laravel 用于生成数据库种子。
"sentence" 和 "paragraph" 都包含在 faker 的 Lorem 提供程序中。这完全是拉丁语,无法更改为其他语言。
Laravel 中包含的 Faker 软件包确实没有针对此问题的 out-of-the-box 解决方案,但值得一提的是,有针对此限制的 'hack' 解决方法。
你不会得到漂亮的句子,但是如果你使用 Faker 的 company->catchPhrase 和 company->bs 方法,你可以串起一些非常幽默的句子 english-language,即使他们不任何意义。但如果你只是单纯地寻找英文单词串,而不关心其内容,那么利用这两种方法或许能帮到你!
在 Laravel 中,我使用以下代码为新闻网站的种子文章制作了一些漂亮的英文标题:
$title = ucwords($faker->catchPhrase .' '.$faker->bs);