Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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 Symfony2:列'的重复定义;id';字段或鉴别器列映射中的实体_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php Symfony2:列'的重复定义;id';字段或鉴别器列映射中的实体

Php Symfony2:列'的重复定义;id';字段或鉴别器列映射中的实体,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,在Symfony2中使用实体继承时遇到问题。以下是我的两门课: use Doctrine\ORM\Mapping as ORM; /** * @Orm\MappedSuperclass */ class Object { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\Generate

在Symfony2中使用实体继承时遇到问题。以下是我的两门课:

use Doctrine\ORM\Mapping as ORM;

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


/**
  * @Orm\MappedSuperclass
 */
class Book extends Object
{
}
当我运行php应用程序/控制台原则:schema:create时,我得到以下错误:

[Doctrine\ORM\Mapping\MappingException]  
Duplicate definition of column 'id' on entity 'Name\SiteBundle\Entity\Book' in a field or discriminator column mapping.
这可能是什么原因造成的

谢谢:)

更新: 你是对的,我错过了这个。现在我使用单表继承,两个类都是实体:

/**
 * @Entity
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="discr", type="string")
 * @DiscriminatorMap({"object" = "Object", "book" = "Book"})
 */

但我仍然收到相同的错误消息。

任何实体都必须至少包含一个字段

必须在账簿实体中至少添加一个字段

示例

/**
 * @Orm\MappedSuperclass
*/
class Book extends Object
{
 /**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
  private $id;
}

实际上,我在Resources/config/doctor/中找到了yml文件,它们定义了我的实体,而不仅仅是使用注释

我删除了这些文件,现在可以正常工作了


谢谢你的帮助

我收到了相同的错误消息,但犯了不同的错误:


类B有一个ID,扩展类A也有一个ID(受保护,非私有)。因此,我不得不从类B中删除ID。

即使在向yml文件添加定义之后,我也遇到了同样的问题。我试图在课堂上增加重量和最大重量,并得到:

字段或鉴别器列映射中实体“Model\ClientSuppliedProduct”上列“weight\u value”的重复定义。

然后我意识到类似类型的字段需要
columnprix
不同,在yml中添加以下内容为我解决了这个问题:

`maxWeight:`
  `class: Model\Weight`
  `columnPrefix: max_weight_`

我有同样的问题和错误消息,但对我来说,这是另一种方式,如@user2090861所说

我不得不移除(未使用的)

从我的实体文件,因为我真正的映射来自orm.xml文件


我希望我能帮助其他许多人回答我的问题,因为这一例外在过去的两天里让我发疯

有时无法删除额外的配置文件,因为它们位于第三方包中,并且启用了
自动映射

在这种情况下,您应该在
app/config.yml

doctrine:
orm:
    entity_managers:
        default:
            mappings:
                SonataMediaBundle: { mapping: false }

我在另一个上下文中遇到了这个问题-在我的例子中,我使用
@ORM\DiscriminatorColumn
为单表继承设置了一个实体,但也在我的类定义中包含了该列:

/**
 * @ORM\Entity(repositoryClass="App\Repository\DirectoryObjectRepository")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="kind", type="string")
 */
class DirectoryObject {
    // ...
    /**
     * @ORM\Column(type="string", length=255)
     */
    private $kind;
}


删除
@ORM\Column
种类定义
修复了这个问题,就像条令对我的定义一样。

你在尝试多重继承吗?如果不是的话,我邀请你阅读这篇文章,尤其是黄色的方框。“MappedSuperclass不能是一个实体”你的回答也帮助了我!:)Symfony 3.1 FOSUser捆绑包。
/**
 * @ORM\Entity(repositoryClass="App\Repository\DirectoryObjectRepository")
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="kind", type="string")
 */
class DirectoryObject {
    // ...
    /**
     * @ORM\Column(type="string", length=255)
     */
    private $kind;
}