2011-06-05 44 views
6

我嘗試使用Doctrine2爲我的Symfony2應用程序構建manyToOne關係。我得到這個錯誤,我不知道爲什麼:OneToMany/ManyToOne SchemaException

app/console doctrine:schema:create 
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0 
ATTENTION: This operation should not be executed in an production enviroment. 


    [Doctrine\DBAL\Schema\SchemaException] 
    There is no column with name 'activityGroup' on table 'activity'. 

這些是兩類:http://pastebin.com/Ev7Rwgxr

我覺得實際上是對的ActivityGroup Activity類......那麼,什麼是錯誤嘗試說?

謝謝!

回答

8

我知道了......

的uniqueconstraints期待真正的數據庫字段的名稱是activityGroup_id並不僅僅是activityGroup

可以通過提供JoinColumn來確定在數據庫中調用該字段的內容。

所以,一個聰明的解決方案是:

/** 
    * @ORM\Entity 
    * @ORM\Table(name="activity", 
    *  uniqueConstraints={ 
    *   @ORM\UniqueConstraint(name="name_idx", columns={"activity_group_id", "name"}), 
    *   @ORM\UniqueConstraint(name="sort_idx", columns={"activity_group_id", "sort_id"}) 
    *  } 
    *) 
    */ 
    class Activity 
    { 
     // ... 

     /** 
     * @ORM\ManyToOne(targetEntity="SeduceMe\SiteBundle\Entity\ActivityGroup", inversedBy="activities") 
     * @ORM\JoinColumn(name="activity_group_id", referencedColumnName="id") 
     */ 

     protected $activityGroup; 
     //... 
    }