Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 2+;第2条+;遗产_Php_Inheritance_Symfony_Doctrine_Doctrine Orm - Fatal编程技术网

Php Symfony 2+;第2条+;遗产

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;

我正在使用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 
{

}

这不是表继承。映射的超类只是映射继承。
与最终实体对应的表格不会以任何方式相互依赖

如果需要实表继承(单表或联接表),请使用以下命令:


如果仍要使用映射的超类,则必须将
@ORM\Id
定义放在最后两个类中。您可以将ID放入映射的超类中。

嘿,这对我来说很有效。我得到一个名为
konzultacnihodiny
的表和一个名为
urednihodiny
的表,这两个表都包含5个字段。注意,我还需要添加另外两个实体,因为它们当前是Hodiny基类中的FKs。你还应该确认你想用什么,因为有不止一个。