/
forest-lynx
/
project
Обзор
Документация
Войти
/
forest-lynx
/
project
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/DataFixtures/AppFixtures.php
89 строк
3 KB
forest-lynx
init
04 дек 2024, 10:44
04 дек 2024, 10:44
f4ceba2
Код
Авторство
О чём код?
<?php namespace App\DataFixtures; use App\Entity\Developer; use App\Entity\Employment; use App\Entity\ParticipationProject; use App\Entity\Position; use App\Entity\Project; use App\Enum\EmployeeStatus; use App\Enum\Gender; use App\Enum\Status; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; use Faker\Factory; class AppFixtures extends Fixture { public function load(ObjectManager $manager): void { $faker = Factory::create('ru_RU'); $positions = []; $positionNames = ['Junior', 'Middle', 'Senior', 'Team-lead', 'Tech-lead']; foreach ($positionNames as $name) { $position = new Position(); $position->setName($name); $manager->persist($position); $positions[] = $position; } $projects = []; for ($i = 0; $i < 10; $i++) { $project = new Project(); $project->setName($faker->company()) ->setClient($faker->company()) ->setDateFrom($faker->dateTimeBetween('-2 years', 'now')) ->setDateTo($faker->optional(0.3)->dateTimeBetween('-1 year', '+1 years')) ->setStatus($faker->randomElement(Status::cases())); $manager->persist($project); $projects[] = $project; } $developers = []; for ($i = 0; $i < 50; $i++) { $developer = new Developer(); $developer->setFirstName($faker->firstName()) ->setLastName($faker->lastName()) ->setMiddleName($faker->middleName()) ->setEmail($faker->email()) ->setPhone($faker->phoneNumber()) ->setBirthday($faker->dateTimeBetween('-40 years', '-20 years')) ->setGender($faker->randomElement(Gender::cases())) ->setStatus($faker->randomElement(EmployeeStatus::cases())); $employment = new Employment(); $employment->setDeveloper($developer) ->setPosition($faker->randomElement($positions)) ->setDateFrom($faker->dateTimeBetween('-2 years', 'now')) ->setDateTo($faker->optional(0.3)->dateTimeBetween('-1 year', 'now')) ->setOrderNumber($faker->numerify('ORDER-####')); $developer->addEmployment($employment); $manager->persist($developer); $manager->persist($employment); $developers[] = $developer; } foreach ($projects as $project) { $devsCount = $faker->numberBetween(2, 8); $selectedDevs = $faker->randomElements($developers, $devsCount); foreach ($selectedDevs as $dev) { $participation = new ParticipationProject(); $participation->setProject($project) ->setDeveloper($dev) ->setDateFrom($faker->dateTimeBetween('-2 years', 'now')) ->setDateTo($faker->optional(0.3)->dateTimeBetween('-1 year', '+1 years')); $manager->persist($participation); } } $manager->flush(); } }