56 lines
1.5 KiB
PHP
56 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Database\Factories;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
|
use Illuminate\Support\Str;
|
|
use Peidikeji\User\Models\User;
|
|
|
|
class UserFactory extends Factory
|
|
{
|
|
protected $model = User::class;
|
|
|
|
/**
|
|
* Define the model's default state.
|
|
*
|
|
* @return array<string, mixed>
|
|
*/
|
|
public function definition()
|
|
{
|
|
$faker = $this->faker;
|
|
|
|
do {
|
|
$phone = $faker->phoneNumber();
|
|
} while (User::where('phone', $phone)->exists());
|
|
|
|
do {
|
|
$username = $faker->userName();
|
|
} while (User::where('username', $username)->exists());
|
|
|
|
$inviter_id = null;
|
|
$inviter_path = '-';
|
|
$inviter = User::inRandomOrder()->first();
|
|
if ($inviter) {
|
|
$inviter_id = $inviter->id;
|
|
$inviter_path = $inviter->inviter_path.$inviter_id.'-';
|
|
}
|
|
|
|
do {
|
|
$invite_code = strtoupper(Str::random(6));
|
|
} while (User::where('invite_code', $invite_code)->exists());
|
|
|
|
return [
|
|
'username' => $username,
|
|
'gender' => $faker->randomElement(['男', '女', '未知']),
|
|
// 123456
|
|
'password' => '$2y$10$QAGGjfTDjmgDFrX8LkFZ4e0A4MG.doRc8xoq1Cixf6IbHq7RPRqtq',
|
|
'name' => $faker->name(),
|
|
'avatar' => 'https://via.placeholder.com/64x64.png',
|
|
'invite_code' => $invite_code,
|
|
'inviter_id' => $inviter_id,
|
|
'inviter_path' => $inviter_path,
|
|
'phone' => $phone,
|
|
];
|
|
}
|
|
}
|