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

Laravel 9中如何用Faker生成11位唯一手机号?

Laravel 9 生成11位唯一手机号的Faker填充方案

先修正原代码中的几个问题

  • usr_is_superuser字段值错误:该字段应表示是否为超级管理员,需用布尔值(0或1)而非now()
  • 统一使用Laravel 9推荐的全局fake()助手函数,避免混用$faker变量
  • usr_first_name和usr_last_name建议分别用firstName()和lastName()生成,更贴合字段含义

生成11位唯一手机号的解决方案

针对国内11位手机号规则(以13/15/17/18/19开头,后续跟9位数字),提供两种可靠实现方式:

方式一:用numerify生成固定/随机号段手机号

通过指定号段前缀,结合numerify生成后续数字,再用unique()保证唯一性:

// 固定号段示例
'usr_mobile_phone' => fake()->unique()->numerify('13#########'),

// 随机号段示例
$prefixes = ['13', '15', '17', '18', '19'];
'usr_mobile_phone' => fake()->unique()->numerify($prefixes[array_rand($prefixes)] . '#########'),

方式二:用regexify匹配手机号正则规则

直接通过正则表达式约束格式,精准符合国内手机号规范:

'usr_mobile_phone' => fake()->unique()->regexify('/1[3-9]\d{9}/'),

修正后的完整definition方法

use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;

public function definition()
{
    $prefixes = ['13', '15', '17', '18', '19'];
    
    return [
        'usr_first_name' => fake()->firstName(),
        'usr_last_name' => fake()->lastName(),
        'usr_user_name' => fake()->unique()->userName(), // 用userName()生成更合理的用户名
        'usr_mobile_phone' => fake()->unique()->regexify('/1[3-9]\d{9}/'),
        'usr_password_hash' => Hash::make('123456'),
        'usr_email_address' => fake()->unique()->safeEmail(),
        'email_verified_at' => now(),
        'usr_is_superuser' => fake()->boolean(10), // 按需调整超级管理员概率,示例为10%
        'usr_is_active' => 1,
        'usr_str' => Str::random(10),
        'remember_token' => Str::random(10),
    ];
}

内容的提问来源于stack exchange,提问作者Pouya Vaghefi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:10:44