Php Symfony 2+;第2条+;遗产
我正在使用Symfony 2框架中内置的Doctrine 2为以下数据库继承问题寻找解决方案。这就是我想做的 我想用与抽象类Hodiny相同的接口创建两个表(UredniHodiny、KonzultacniHodiny)。这就是我试图做到的Php Symfony 2+;第2条+;遗产,php,inheritance,symfony,doctrine,doctrine-orm,Php,Inheritance,Symfony,Doctrine,Doctrine Orm,我正在使用Symfony 2框架中内置的Doctrine 2为以下数据库继承问题寻找解决方案。这就是我想做的 我想用与抽象类Hodiny相同的接口创建两个表(UredniHodiny、KonzultacniHodiny)。这就是我试图做到的 <?php // src/CvutPWT/ImportBundle/Entity/Hodiny.php namespace CvutPWT\ImportBundle\Entity; use Doctrine\ORM\Mapping as ORM;
<?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
{
}
这不是表继承。映射的超类只是映射继承。
与最终实体对应的表格不会以任何方式相互依赖
如果需要实表继承(单表或联接表),请使用以下命令:
如果仍要使用映射的超类,则必须将@ORM\Id
定义放在最后两个类中。您可以不将ID放入映射的超类中。嘿,这对我来说很有效。我得到一个名为konzultacnihodiny
的表和一个名为urednihodiny
的表,这两个表都包含5个字段。注意,我还需要添加另外两个实体,因为它们当前是Hodiny基类中的FKs。你还应该确认你想用什么,因为有不止一个。