2025-07-30 18:01:17 +03:00

62 lines
2.1 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\Member; // Make sure your Member model namespace is correct
use Faker\Factory as Faker;
use Illuminate\Support\Str;
class MembersTableSeeder extends Seeder
{
public function run()
{
$faker = Faker::create();
// Number of dummy members to create
$count = 50;
for ($i = 0; $i < $count; $i++) {
$gender = $faker->randomElement(['male', 'female']);
// Generate multiple phones & emails
$phones = [
$faker->phoneNumber,
$faker->phoneNumber
];
$emails = [
$faker->unique()->safeEmail,
$faker->unique()->safeEmail,
];
// Generate social media profiles (randomly leave some empty)
$socialMedia = [
'facebook' => $faker->boolean(70) ? $faker->url : null,
'instagram' => $faker->boolean(70) ? $faker->url : null,
'twitter' => $faker->boolean(70) ? $faker->url : null,
'linkedin' => $faker->boolean(50) ? $faker->url : null,
];
// Filter out null social media links
$socialMedia = array_filter($socialMedia);
Member::create([
'name' => $faker->name($gender),
'picture' => $faker->imageUrl(400, 400, 'people'), // Random 400x400 image
'gender' => $gender,
'date_of_birth' => $faker->dateTimeBetween('-50 years', '-6 years')->format('Y-m-d'), // Age 6 to 50 years
'nationality' => $faker->country,
'weight' => $faker->randomFloat(2, 30, 120), // Between 30kg and 120kg
'height' => $faker->randomFloat(2, 140, 210), // Between 140cm and 210cm
'contact_info' => json_encode([
'phones' => $phones,
'emails' => $emails,
]),
'social_media' => json_encode($socialMedia),
// 'unique_id' will auto-generate via model observer
]);
}
}
}