Estoy buscando una solución para el siguiente problema con una herencia de base de datos usando Doctrine 2 integrado en el marco de Symfony 2. Esto es lo que quiero hacer ...Symfony 2 + herencia de Doctrine 2 +
Quiero crear dos tablas (UredniHodiny, KonzultacniHodiny) con la misma interfaz que la clase abstracta HODINY. Esta es la forma en que estoy tratando de hacerlo
<?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
{
}
Ahora en que funciono php app/console doctrine:generate:entities CvutPWTImportBundle
Symfony genera todas las variables (más precisamente columnas) de la clase HODINY como variables privadas a ambas clases hijas. Ahora cuando trato de crear esas tablas con app/console doctrine:schema:update --force
recibo errores que $id must be protected or weaker
. Cuando cambio esta protección manualmente, puedo crear tablas, pero solo hay una columna (id). Pero esto no es lo que esperaba. ¿Alguien puede darme algún consejo sobre lo que estoy haciendo mal?
Oye, esto funciona como esperaba para mí. Obtengo una tabla llamada 'konzultacnihodiny' y una tabla llamada' urednihodiny' que ambas contienen 5 campos. Nota: También necesitaba agregar otras dos entidades ya que actualmente son FK en la clase base de Hodiny. También debe confirmar qué [tipo de herencia] (http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html) desea utilizar ya que hay más de uno. – Shane