CLI Doctrine 2 - 索引已定义

Lan*_*ust 4 php entity doctrine identifier doctrine-orm

我正在尝试使用我的PHP实体中的Doctrine 2创建我的数据库.

这是团队中的代码:

<?php
// Team.php
/**
 * @Entity @Table(name="team")
 **/
class Team
{
    /**
     * @Id
     * @OneToOne(targetEntity="User")
     * @JoinColumn(name="userID", referencedColumnName="id")
     */
    protected $user;

    /**
     * @Column(type="string",length=30)
     * @var string
     **/
    protected $function;

    /**
     * @Column(type="text")
     * @var string
     **/
    protected $description;

    /**
     * @OneToOne(targetEntity="File")
     * @JoinColumn(name="fileID", referencedColumnName="id")
     */
    protected $img;

    /**
     * @OneToOne(targetEntity="File")
     * @JoinColumn(name="fileID", referencedColumnName="id")
     */
    protected $cv;

    /**
     * @Id
     * @OneToOne(targetEntity="Language")
     * @JoinColumn(name="languageID", referencedColumnName="id")
     */
    protected $lang;

    public function getUser()
    {
        return $this->user;
    }

    public function setUser(User $user)
    {
        $this->user = $user;
    }

    public function getFunction()
    {
        return $this->function;
    }

    public function setFunction($function)
    {
        $this->function = $function;
    }

    public function getDescription()
    {
        return $this->description;
    }

    public function setDescription($description)
    {
        $this->description = $description;
    }

    public function getImg()
    {
        return $this->img;
    }

    public function setImg($img)
    {
        $this->img = $img;
    }

    public function getCv()
    {
        return $this->cv;
    }

    public function setCv($cv)
    {
        $this->cv = $cv;
    }

    public function getLang()
    {
        return $this->lang;
    }

    public function setLang(Language $language)
    {
        $this->lang = $language;
    }
}
Run Code Online (Sandbox Code Playgroud)

而错误:

[Doctrine\DBAL\Schema\SchemaException]
An index with name 'uniq_c4e0a61f93cb796c' was already defined on table 'team'
Run Code Online (Sandbox Code Playgroud)

从作曲家加载Doctrine并与Windows CMD一起使用(如果可以帮助的话).

我已经看到v.2.5.0报告了一个问题所以我加载了2.4.7但是同样的错误,所以我尝试了dev-master但仍然是相同的.

我还尝试删除复合ID并将其替换为简单生成的@Id,甚至没有(Doctrine当时说没有为实体"团队"指定的标识符/主键).

此代码与v.2.4.2一起使用,但重点是更新用于此项目的工具.

有人知道我怎么能这样做吗?

Lan*_*ust 7

好吧,我发现了问题:

/**
 * @OneToOne(targetEntity="File")
 * @JoinColumn(name="fileID", referencedColumnName="id")
 */
protected $img;

/**
 * @OneToOne(targetEntity="File")
 * @JoinColumn(name="fileID", referencedColumnName="id")
 */
protected $cv;
Run Code Online (Sandbox Code Playgroud)

更准确地说@JoinColumn(name="fileID", referencedColumnName="id"),两者的列名fileID相同.

不管怎么说,还是要谢谢你 !