Doctrine / Symfony - 继承 - 关系

时间:2018-06-19 08:09:58

标签: symfony inheritance doctrine-orm orm entity-relationship

我有两个实体:个人(个人)和Epoux_se(丈夫) 丈夫延伸个人

class Individu
{
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="nom", type="string", length=30)
 */
private $nom;

/**
 * @ORM\OneToOne(targetEntity="AppBundle\Entity\Individu", cascade={"persist"})
 * @ORM\JoinColumn(name="pere_id", referencedColumnName="id", onDelete="CASCADE")
 */
private $pere;

public function __construct($nom, $prenoms, $sexe)
{
    $this->nom = $nom;
    $this->prenoms= $prenoms;
    $this->sexe = $sexe;
    $this->actes = new \Doctrine\Common\Collections\ArrayCollection();
}

班上的丈夫

class Epoux_se extends Individu
{
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

public function __construct($nom, $prenoms, $sexe, $lieuOrigine, $dateNaissance, $age)
{
    parent::__construct($nom, $prenoms, $sexe);
    $this->lieuOrigine = $lieuOrigine;
    $this->dateNaissance = $dateNaissance;
    $this->age = $age;
}

当我导入DataFixtures

  

新Epoux_se(“Aurel”,[“Jean-Christophe”,“Marc”],“M”,“圣马洛”,   “05/08/1722”,22);

我对丈夫的构造函数有错误

  

SQLSTATE [42S22]:未找到列:1054未知列'pere_id'   '字段列表'

     

执行'INSERT INTO epoux_se(nom,prenoms,sexe,profession,pere_id,mere_id,lieu)时发生异常   Origine,dateNaissance,age)VALUES(?,?,?,?,?,?,?,?,?)'与params [“Aurel”,“a:2:{i:0; s:15:\”让 - 基督   ophe \“; i:1; s:4:\”Marc \“;}”,“M”,null,null,null,“Saint-Malo”,“05/08/1722”,22]:

灯具:

$marie = new Individu("Duhamel", ["Ophelia", "Carmène"], "F"); 
$manager->persist($marie); 
$epoux_se = new Epoux_se("Aurel", ["Jean-Christophe", "Marc"], "M", "Saint-Malo", "05/08/1722", 22); 
$manager->persist($epoux_se); 
$manager->flush(); 

怎么办?谢谢!

2 个答案:

答案 0 :(得分:1)

我找到了解决方案!有必要在Individual Entity上面添加以下注释

  
      
  • @ORM \ InheritanceType( “结合”)
  •   
/**
* Individu
*
* @ORM\InheritanceType("JOINED")
*
* @ORM\Entity(repositoryClass="AppBundle\Repository\IndividuRepository")
*/
class Individu

答案 1 :(得分:0)

将父类属性的可见性更改为protected。然后更新您的数据库方案。