我正在寻找使用 Symfony 2 框架中内置的 Doctrine 2 来解决以下数据库继承问题的解决方案。这就是我想做的...
我想创建两个与抽象类 Hodiny 具有相同接口的表(UredniHodiny、KonzultacniHodiny)。这就是我正在尝试的方式
<?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
{
}
现在,当我运行php app/console doctrine:generate:entities CvutPWTImportBundle
Symfony 时,会从类 Hodiny 生成所有变量(更准确地说是列),作为两个子类的私有变量。现在,当我尝试创建这些表时,app/console doctrine:schema:update --force
我遇到了$id must be protected or weaker
. 当我手动更改此保护时,我可以创建表,但只有一列(id)。但这不是我所希望的。有人可以给我任何建议我做错了什么吗?