Estoy tratando de implementar las ofertas de Class Table Inheritance Doctrine 2 en mi proyecto Symfony 2. Digamos que una tiene una clase pizza, Burito clase y un MacAndCheese clase la que todos heredan de una clase Comida .Doctrina 2: problemas de nivel de acceso al usar la herencia de tabla de clase
The Food clase tiene los siguientes valores:
<?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;
Y las clases heredadas tienen estos ajustes (pizza por ejemplo):
<?php
namespace Kitchen;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="food_pizza")
*/
class Pizza extends Food {
Cuando se ejecuta doctrina: schema: update --force desde la aplicación/consola Symfony 2 me sale un error sobre t se accede nivel de $ id en los hijos de Alimentos (pizza por ejemplo), que indica que debe ser protegida o más débil. No he declarado $ id en cualquier parte del pizza, ya que supuse que sería heredado de Alimentos.
Así que traté de declarar $ id, pero eso me da un error, porque no puedo volver a declarar $ id. Calculo que necesito algún tipo de referencia a partir de $ id Alimentos en pizza, pero la documentación de Doctrine 2 en realidad no me dan una respuesta clara sobre lo que esto se vería así.
Espero que entiendas lo que quiero decir y me ayudes.
¿Está diciendo que su IDE fue el que cambió el nivel de acceso en sus campos? Eso es un poco aterrador. ¿Qué IDE usas para poder estar atento a que eso suceda? – cantera
@ cantera25 No era el IDE, era el comando symfony 2 doctrine: generate: entities que lo hizo. –
Gracias. Me ahorró mucho tiempo. –