Я пытаюсь реализовать предложения Наследование таблиц классов в моем проекте Symfony 2.
Допустим, у нас есть класс Pizza , класс Burito и класс MacAndCheese , которые наследуются от Food класс.
Класс Еда имеет следующие настройки:
<?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;
И унаследованные классы имеют следующие настройки (например, Pizza ):
<?php
namespace Kitchen;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="food_pizza")
*/
class Pizza extends Food {
При запуске doctrine: schema: update --force из приложения / консоли Symfony 2 я получаю ошибку об уровне доступа $ id в дочерних элементах Еда (например, Пицца ), заявив, что она должна быть защищена или слабее. Я не объявлял $ id нигде в Пицце , так как я рассчитывал, что она будет унаследована от Еда .
Поэтому я попытался объявить $ id , но это выдает ошибку, потому что я не могу переопределить $ id.
Я полагаю, мне нужна какая-то ссылка на $ id из Еда в Пицца , но документация Doctrine 2 не дала мне однозначного ответа на вопрос, что это будет выглядеть так.
Надеюсь, вы понимаете, о чем я, и можете мне помочь.