|
32 | 32 | */
|
33 | 33 | class ORM
|
34 | 34 | {
|
| 35 | + /** |
| 36 | + * @var ORMExecutor |
| 37 | + */ |
| 38 | + private $executor; |
| 39 | + |
35 | 40 | /**
|
36 | 41 | * @var ContainerInterface
|
37 | 42 | */
|
@@ -77,27 +82,31 @@ public function getOm($managerName = null)
|
77 | 82 | return $this->om;
|
78 | 83 | }
|
79 | 84 |
|
| 85 | + /** |
| 86 | + * Purge the database |
| 87 | + */ |
| 88 | + public function purgeDatabase() |
| 89 | + { |
| 90 | + $referenceRepository = new ProxyReferenceRepository($this->getOm()); |
| 91 | + $this->getExecutor()->setReferenceRepository($referenceRepository); |
| 92 | + $this->getExecutor()->purge(); |
| 93 | + } |
| 94 | + |
80 | 95 | /**
|
81 | 96 | * Loads fixture classes.
|
82 | 97 | *
|
83 | 98 | * @param string[] $classNames
|
84 | 99 | */
|
85 | 100 | public function loadFixtures(array $classNames)
|
86 | 101 | {
|
| 102 | + $this->purgeDatabase(); |
87 | 103 | $loader = new ContainerAwareLoader($this->container);;
|
88 |
| - $purger = new ORMPurger(); |
89 |
| - $executor = new ORMExecutor($this->getOm(), $purger); |
90 |
| - |
91 |
| - $referenceRepository = new ProxyReferenceRepository($this->getOm()); |
92 |
| - |
93 |
| - $executor->setReferenceRepository($referenceRepository); |
94 |
| - $executor->purge(); |
95 | 104 |
|
96 | 105 | foreach ($classNames as $className) {
|
97 | 106 | $this->loadFixtureClass($loader, $className);
|
98 | 107 | }
|
99 | 108 |
|
100 |
| - $executor->execute($loader->getFixtures(), true); |
| 109 | + $this->getExecutor()->execute($loader->getFixtures(), true); |
101 | 110 | }
|
102 | 111 |
|
103 | 112 | /**
|
@@ -130,4 +139,21 @@ protected function loadFixtureClass(Loader $loader, $className)
|
130 | 139 | }
|
131 | 140 | }
|
132 | 141 | }
|
| 142 | + |
| 143 | + /** |
| 144 | + * Return the ORM Executor class |
| 145 | + * |
| 146 | + * @return ORMExecutor |
| 147 | + */ |
| 148 | + private function getExecutor() |
| 149 | + { |
| 150 | + if ($this->executor) { |
| 151 | + return $this->executor; |
| 152 | + } |
| 153 | + |
| 154 | + $purger = new ORMPurger(); |
| 155 | + $this->executor = new ORMExecutor($this->getOm(), $purger); |
| 156 | + |
| 157 | + return $this->executor; |
| 158 | + } |
133 | 159 | }
|
0 commit comments