2011-06-05 20 views
6

Intento crear una relación manyToOne para mi aplicación Symfony2 con Doctrine2. Me sale este error y no sé por qué: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'. 

Esas son las dos clases: http://pastebin.com/Ev7Rwgxr

creo que realmente hay ActivityGroup en la clase de actividad ... así que lo que hace que el error de tratar ¿decir?

Gracias!

Respuesta

8

lo tengo ...

los uniqueconstraints esperan que el verdadero nombre del campo dB que es activityGroup_id y no sólo activityGroup.

Uno puede asegurarse de que se llama el campo en el DB, proporcionando JoinColumn.

Por lo tanto, una solución inteligente es:

/** 
    * @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; 
     //... 
    }