Próbuję wstawić oferty Class Table Inheritance Doctrine 2 w moim projekcie Symfony 2. Powiedzmy, że masz Pizza klasę, Burito klasa i klasa MacAndCheese które dziedziczą z Żywności klasie.Doctrine 2 - Problemy z poziomem dostępu podczas korzystania z dziedziczenia z tabeli klas
Food klasa ma następujące ustawienia:
<?php
namespace Kitchen;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="food")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="dish", type="string")
* @ORM\DiscriminatorMap({"pizza" = "Pizza", "burito" = "Burito", "mac" => "MacAndCheese"})
*/
class Food {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
I dziedziczone klasy mają te ustawienia (Pizza przykładowo):
<?php
namespace Kitchen;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="food_pizza")
*/
class Pizza extends Food {
Uruchamiając doktryny: schemat: aktualizacja --force z aplikacji/konsoli Symfony 2 Pojawia się błąd dotyczący t on dostęp poziom $ id w dzieciach Żywności (Pizza na przykład), stwierdzając, musi być chroniony lub słabsze. I nie zadeklarowały $ id gdziekolwiek w Pizza, ponieważ uznałem, że będzie dziedziczona z Żywności.
Tak więc próbowałem zadeklarować $ id, ale to daje mi błąd, ponieważ nie mogę redeclare $ id. I rysunek muszę jakieś odniesienie do $ id od Żywności w Pizza, ale dokumentacja Doctrine 2 tak naprawdę nie dał mi jasnej odpowiedzi na to, co to będzie wyglądać.
Mam nadzieję, że rozumiesz, co mam na myśli i mogę mi pomóc.
Czy mówisz, że to IDE zmieniało poziom dostępu do twoich pól? To trochę przerażające. Jakiego IDE używasz, więc mogę mieć oko na to, co się dzieje? – cantera
@ cantera25 To nie było IDE, to była doktryna Symfony 2: generate: entities, która to zrobiła. –
Dzięki. Zaoszczędził mnóstwo mojego czasu. –