Sto provando a impiantare le offerte di Doctrine 2 Class Table Inheritance nel mio progetto Symfony 2. Diciamo un avere un Pizza classe, Burito classe e una MacAndCheese classe cui tutti ereditano da un alimentari classe.Doctrine 2 - Problemi di livello di accesso durante l'utilizzo dell'ereditarietà delle tabelle di classe
Il cibo classe ha le seguenti impostazioni:
<?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;
E le classi ereditate hanno queste impostazioni (Pizza per esempio):
<?php
namespace Kitchen;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="food_pizza")
*/
class Pizza extends Food {
Quando si esegue dottrina: schema: update --force dall'app/console Symfony 2 Ottengo un errore su t si accede livello di $ id nei figli di alimentari (Pizza per esempio), affermando che deve essere protetto o più debole. Non ho dichiarato $ id in qualsiasi parte del Pizza, dal momento che accreditò sarebbe stato ereditato da alimentari.
Così ho provato a dichiarare $ id, ma questo mi dà un errore, perché non posso ridichiarare $ id. Immagino ho bisogno di qualche tipo di riferimento a $ id da alimentari in Pizza, ma la documentazione Doctrine 2 non mi ha dato una risposta chiara su ciò che questo sarebbe simile.
Spero che tu capisca cosa intendo e mi può aiutare.
Stai dicendo che il tuo IDE è stato quello che ha cambiato il livello di accesso nei tuoi campi? È un po 'spaventoso. Che IDE usi, quindi posso tenere d'occhio che ciò accada? – cantera
@ cantera25 Non era l'IDE, era la dottrina di Symfony 2: generare: comando entità che lo ha fatto. –
Grazie. Ha risparmiato un sacco di tempo. –