Passed
Push — develop ( 070db2...bbac33 )
by BENARD
19:02 queued 12:47
created

SerieFixtures::load()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace VideoGamesRecords\CoreBundle\DataFixtures;
6
7
use Doctrine\Bundle\FixturesBundle\Fixture;
8
use Doctrine\ORM\Mapping\ClassMetadataInfo;
9
use Doctrine\Persistence\ObjectManager;
10
use Exception;
11
use VideoGamesRecords\CoreBundle\Entity\Serie;
12
13
class SerieFixtures extends Fixture
14
{
15
    /**
16
     * @var array<string>
17
     */
18
    private array $entities = [
19
        'Serie',
20
    ];
21
22
    /**
23
     * @var array<mixed>
24
     */
25
    private array $series = [
26
        [
27
            'id'        => 1,
28
            'libSerie' => 'Forza Motosport',
29
        ],
30
        [
31
            'id'        => 2,
32
            'libSerie' => 'Mario Kart',
33
        ],
34
    ];
35
36
37
    private function updateGeneratorType(ObjectManager $manager): void
38
    {
39
        foreach ($this->entities as $entity) {
40
            $metadata = $manager->getClassMetaData("VideoGamesRecords\\CoreBundle\\Entity\\" . $entity);
41
            $metadata->setIdGeneratorType(ClassMetadataInfo::GENERATOR_TYPE_NONE);
42
        }
43
    }
44
45
    /**
46
     * @throws Exception
47
     */
48
    public function load(ObjectManager $manager): void
49
    {
50
        $this->updateGeneratorType($manager);
51
        $this->loadSeries($manager);
52
        $manager->flush();
53
    }
54
55
56
    /**
57
     * @param ObjectManager $manager
58
     */
59
    private function loadSeries(ObjectManager $manager): void
60
    {
61
        foreach ($this->series as $row) {
62
            $serie = new Serie();
63
            $serie->setId($row['id']);
64
            $serie->setLibSerie($row['libSerie']);
65
            $serie->setCreatedAt(new \Datetime());
66
            $serie->setUpdatedAt(new \Datetime());
67
            $manager->persist($serie);
68
            $this->addReference('serie.' . $serie->getId(), $serie);
69
        }
70
    }
71
}
72