W pliku CostamBundle/DataFixtures/ORM/LoadData.php mam klasę:
class LoadData implements \Doctrine\Common\DataFixtures\FixtureInterface{}
a w niej metodę:
function load(ObjectManager $manager){}
W metodzie tej dla każdej z Encji mojej bazy danych porobiłem sobie tablice wypełnione danymi, które później zamieniam na obiekty i ładuję do każdej z tabel. Przykład poniżej:
namespace My\CostamBundle\DataFixtures\ORM; use Doctrine\Common\Persistence\ObjectManager; use My\CostamBundle\Entity\Matchday; ... class LoadData implements \Doctrine\Common\DataFixtures\FixtureInterface { function load(ObjectManager $manager) { /** * Matchday */ '2014-02-10', '2014-02-17', '2014-02-24', '2014-03-03', '2014-03-10', '2014-03-17', '2014-03-24', '2014-03-31', '2014-04-07', '2014-04-14', '2014-04-21', '2014-04-28', '2014-05-05', '2014-05-12', '2014-05-19' ), '2014-02-16', '2014-02-23', '2014-03-02', '2014-03-09', '2014-03-16', '2014-03-23', '2014-03-30', '2014-04-06', '2014-04-13', '2014-04-20', '2014-04-27', '2014-05-04', '2014-05-11', '2014-05-18', '2014-05-25' ) ); $matchday = new Matchday(); $matchday->setName('Kolejka ' . ($i + 1)); $matchday->setDateStart(new \DateTime($matchdaySchedule['date_start'][$i])); $matchday->setDateEnd(new \DateTime($matchdaySchedule['date_end'][$i])); $manager->persist($matchday); $matchdays[] = $matchday; } .... $manager->flush();
Wiem że to nie jest dobry pomysł ponieważ w mojej metodzie loadData jest teraz ok. 1000 linijek kodu.
Chciałem się zapytać jak powinienem to prawidłowo zrobić ?
Czy powinienem stworzyć w osobnym katalogu klasę statyczną w której umieszczę metodę/metody a w niej wszystkie tablice do załadowania i następnie tą klasę użyję w klasie loadData ?
Gdzie w Symfony powinienem umieścić takie zbiory danych, które posłużą do załadowania przykładowych danych do bazy danych ?
Jak Wy to robicie ?