Sto cercando una soluzione per il seguente problema con un'ereditarietà del database utilizzando Doctrine 2 integrato nel framework Symfony 2. Questo è quello che voglio fare ...Symfony 2 + ereditarietà di Doctrine 2 +
voglio creare due tabelle (UredniHodiny, KonzultacniHodiny) con la stessa interfaccia come la classe astratta hodiny. Questo è il modo che sto cercando di farlo
<?php
// src/CvutPWT/ImportBundle/Entity/Hodiny.php
namespace CvutPWT\ImportBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\MappedSuperclass
*/
abstract class Hodiny
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Osoba")
*/
protected $osoba;
/**
* @ORM\ManyToOne(targetEntity="Mistnost")
*/
protected $mistnost;
/**
* @ORM\Column(type="datetime")
*/
protected $zacatek;
/**
* @ORM\Column(type="datetime")
*/
protected $konec;
}
<?php
// src/CvutPWT/ImportBundle/Entity/KonzultacniHodiny.php
namespace CvutPWT\ImportBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="konzultacnihodiny")
*/
class KonzultacniHodiny extends Hodiny
{
}
<?php
// src/CvutPWT/ImportBundle/Entity/UredniHodiny.php
namespace CvutPWT\ImportBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="urednihodiny")
*/
class UredniHodiny extends Hodiny
{
}
Ora, quando corro php app/console doctrine:generate:entities CvutPWTImportBundle
Symfony genera tutte le variabili (più precisamente colonne) da classe HODINY come variabili private per entrambe le classi figlio. Ora, quando sto cercando di creare quei tavoli con app/console doctrine:schema:update --force
, sto ricevendo errori che $id must be protected or weaker
. Quando cambio manualmente questa protezione, sono in grado di creare tabelle ma c'è solo una colonna (id). Ma questo non è quello che speravo. Qualcuno può darmi qualche consiglio su cosa sto facendo male?
Ehi, questo funziona come previsto per me. Prendo un tavolo chiamato 'konzultacnihodiny' e un tavolo chiamato' urednihodiny' che contengono entrambi 5 campi. Nota Avevo anche bisogno di aggiungere altre due entità dal momento che sono attualmente FK nella classe base Hodiny. Si dovrebbe anche confermare quale [tipo di ereditarietà] (http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html) si desidera utilizzare come ce ne sono più di uno. – Shane