问题Doctrine两个实体有很多关系,cli工具在创建模式时报告错误(SchemaException)

时间:2011-09-01 06:23:09

标签: php mysql doctrine many-to-many relationships

我创建了两个Doctirne实体,它们之间有多对多的关系。但是当我尝试从该模式创建数据库表时,我得到一个奇怪的异常,这是一个SchemaException,说“带有 somename 的表已经存在”,但是当我仔细检查数据库时,它不包含任何表格。请指导我解决此问题。感谢

实体医生

<?php
use Doctrine\Common\Collections\ArrayCollection;
/**
 * @Entity
 * @Table(name="doctors")
 */
class Default_Model_Doctor
{
    /**
     * @Id @Column(type="integer")
     * @GeneratedValue(strategy="AUTO")
     */
    private $id;

    /** @Column(type="string") */
    private $name;

    /**
     * @ManyToMany(targetEntity="Default_Model_Patient", inversedBy="doctors")
     * @JoinTable(name="doctors_patients",
     *      joinColumns={@JoinColumn(name="doctor_id", referencedColumnName="id")},
     *      inverseJoinColumns={@JoinColumn(name="patient_id", referencedColumnName="id")}
     *      )
     */

    private $patients;

    public function __construct()
    {
      $this->patients = new ArrayCollection();
    }

    public function setName($string) {
        $this->name = $string;
        return true;
    }

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

实体患者

<?php
use Doctrine\Common\Collections\ArrayCollection;
/**
 * @Entity
 * @Table(name="doctors")
 */
class Default_Model_Patient
{
    /**
     * @Id @Column(type="integer")
     * @GeneratedValue(strategy="AUTO")
     */
    private $id;

    /** @Column(type="string") */
    private $name;

    /** 
     * @ManyToMany(targetEntity="Default_Model_Doctor", mappedBy="patients")
     */

    private $doctors;

    public function __construct()
    {
      $this->doctors = new ArrayCollection();
    }

    public function setName($string) {
        $this->name = $string;
        return true;
    }

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

这是我在创建架构时从Doctrine cli工具收到的错误。

请按照此link获取我附上的屏幕截图,以清楚地显示错误。

1 个答案:

答案 0 :(得分:1)

将患者模型中的@Table(name =“doctors”)更改为@Table(姓名=“患者”)