我正在尋找一個解決方案,以解決以下問題,使用構建在Symfony 2框架中的Doctrine 2進行數據庫繼承。這就是我想做的事......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)。但這不是我所希望的。有人可以給我任何建議,我做錯了什麼?
嘿,這工作正如我所料。我得到一張名爲'konzultacnihodiny'的表格和一張名爲'urednihodiny'的表格,它們都包含5個字段。 注意我還需要添加兩個其他實體,因爲它們當前是Hodiny基類中的FK。 您還應該確認您想要使用的[繼承類型](http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html)因爲有不止一個。 – Shane