You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Faker设置en_SG locale后仅生成重复名称求助

解决Laravel中en_SG locale下Faker仅生成固定名称的问题

原因分析

fakerphp/faker v1.9.1版本中,en_SG本地化的名称数据源非常有限,仅内置了John Doe和Jane Doe两组默认名称,属于版本自带Provider的数据缺失问题。

解决方案

1. 升级fakerphp/faker版本

后续版本的faker已补充了en_SG的多组名称数据,执行以下命令完成升级:

composer require fakerphp/faker:^1.20 --update-with-dependencies

升级完成后重新运行数据填充,即可生成更多不同的新加坡英文风格名称。

2. 自定义Faker名称Provider(适合不愿升级版本的场景)

手动扩展en_SG的名称数据源:

  • 在项目app/Faker目录下创建EnSgNameProvider.php文件:
<?php

namespace App\Faker;

use Faker\Provider\Base;

class EnSgNameProvider extends Base
{
    protected static $firstNames = [
        'Arjun', 'Mei', 'Raj', 'Siti', 'Kai', 'Aisha', 'Ben', 'Lina', 'David', 'Priya'
    ];

    protected static $lastNames = [
        'Tan', 'Lee', 'Ng', 'Wong', 'Chua', 'Raj', 'Singh', 'Ong', 'Lim', 'Goh'
    ];

    public function name()
    {
        return $this->firstName() . ' ' . $this->lastName();
    }

    public function firstName()
    {
        return static::randomElement(static::$firstNames);
    }

    public function lastName()
    {
        return static::randomElement(static::$lastNames);
    }
}
  • 在AppServiceProvider的boot方法中注册自定义Provider:
use App\Faker\EnSgNameProvider;
use Faker\Factory;

public function boot()
{
    $faker = Factory::create('en_SG');
    $faker->addProvider(new EnSgNameProvider($faker));
}

之后在工厂中调用$this->faker->name(),即可生成自定义的新加坡本地化名称。

3. 临时使用相近locale(备选方案)

若无需严格的新加坡本地化名称,可临时将faker_locale配置为en_US或en_GB,这两个locale内置了大量多样化的名称数据。

内容的提问来源于stack exchange,提问作者Amit Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:45:23