Zaczynałem projekt Symfony2 od podstaw, gdzie następnie zainstalowałem FOSUserBundle.Użyj FOSUserBundle w odniesieniu do jednostek opartych na yml
Następnie napisałem (faktycznie wygenerowany za pomocą ORM Designer) kilka podmiotów, które muszą mieć relacje między nimi, oraz z jednostką User.
mam Items
należące do Users
, Collections
należące do Users
że grupa Items
, i tak dalej.
Ponieważ użyłem FOSUserBundle mam tylko podstawowe klasy użytkownika (https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md, etap 3a) zdefiniowany za pomocą adnotacji, nie config/doctrine
folder, a nie plik w nim User.yml
.
Następnie utworzyłem folder MyBundle/Resources/config/doctrine
i dodano wymienione powyżej pliki yml
.
Kiedy próbuję generować obiekty za pomocą narzędzia wiersza polecenia, wszystko działa poprawnie: utworzy encje z moich plików yml.
Jednak w tym momencie próbuje załadować w przeglądarkach url gdzie login poprzednio pracował (gdy miałem tylko FOSUserBundle zainstalowany) rzuci ten błąd:
MappingException: No mapping file found named '/var/www/concert/src/X/MyBundle/Resources/config/doctrine/User.orm.yml' for class 'X\MyBundle\Entity\User'.
następujących czynności, takiej jako generowanie logiki CRUD, nie będzie działać tak długo, jak długo będę miał plik *.orm.ym
lw folderze config/doctrine
. Jeśli je usunę, generacja CRUD będzie działać, ale generowanie rzeczywistych tabel mysql nie będzie.
Żonglowanie tymi elementami prowadzi mnie do punktu, w którym mogę uzyskać tabele, ale wtedy rzeczywista aplikacja nie zadziała, jeśli spróbuję użyć dowolnego adresu URL, w którym jest zaangażowany nowo wygenerowany CRUD, ponieważ na podstawie yml (który usuwam, aby rzeczy działały ") nie będzie miał żadnej wiedzy na temat mapowania.
Czy to nieodłączne? Aby jednostki oparte na yml były w relacji z jednostką User na podstawie FOSUserBundle i nadal byłyby w stanie uzyskać ładne narzędzia do generowania wiersza polecenia?
To całkowicie to zrobiło. Podejrzewałem, że musi to być jakaś wskazówka, którą mógłbym dać Symfony, aby to osiągnąć.Jedną z obserwacji jest to, że muszę również dodać linię w User.orm.yml, aby zdefiniować mapowanie tabeli, ponieważ domyślnie będzie ona szukała tabeli o nazwie user, więc dodałem tabelę: fos_user (nazwa, którą odziedziczyłem, gdy Wygenerowałem tabelę użytkowników z pakietu fos). – cbaltatescu
Ups, masz rację, że 'table: fos_user' jest wspomniany w dokumentach, ale przegapiłem go w yaml. Naprawię to od razu. – dbrumann
Jak skonfigurować dziedziczenie? Próbuję tego, ale 'php app/console doktryna: schema: update --dump-sql' zwraca' CREATE TABLE fos_user (id INT NOT NULL, PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB'. Nie dodaje kolumn dziedziczenia. –