2011-05-10 6 views
5

저는 Symfony 2.0과 doctrine을 처음 사용했습니다. 다른 번들에 주 및 고객 엔티티가 있습니다. 나는 단지 국가와 고객 사이의 관계를 추가하고 싶다. 나는 상태와 고객 개체를 코딩했다.Symfony 2 : Doctrine이 관계를 만들 수 없습니다.

/** 
* @orm:Entity 
*/ 
class Customer 
{ 
    /** 
    * @orm:Id 
    * @orm:Column(type="integer") 
    * @orm:GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @OneToOne(targetEntity="State") 
    * @JoinColumn(name="state_id", referencedColumnName="id") 
    */ 
    protected $state; 

} 

/** 
* @orm:Entity 
*/ 
class State 
{ 
    /** 
    * @orm:Id 
    * @orm:Column(type="integer") 
    * @orm:GeneratedValue(strategy="IDENTITY") 
    */ 
    protected $id; 

    /** 
    * @orm:Column(type="string", length="50") 
    */ 
    protected $name; 
} 

그리고 내 config 파일 : 나는 php app/console doctrine:schema:create 명령 테이블을 생성하여 스키마를 생성 할 때

doctrine: 
    dbal: 
     driver: %database_driver% 
     host:  %database_host% 
     dbname: %database_name% 
     user:  %database_user% 
     password: %database_password% 

    orm: 
     auto_generate_proxy_classes: %kernel.debug% 
     mappings: 
      FogCustomerBundle: { type: annotation, dir: Entity/ } 
      FogMainBundle: { type: annotation, dir: Entity/ } 

그래서 내 문제는 여기에 내 코드입니다. 그러나 관계가 생성되지 않거나 고객 테이블에 상태 열이 없습니다. 왜? 나는 모른다. 모든 조언과 게시에 매우 만족합니다.

답변

9

Symfony2가 모든 Doctrine2 주석을 네임 스페이스에 저장하기 때문에 Doctrine2 설명서의 예제를 자세히 따르면이 문제가 발생할 수 있습니다.이 것은 OneToOne 및 JoinColumn 주석에서 누락 된 것으로 보입니다. 은 $ 상태 속성에 대한 코드는 다음과 같아야합니다

/** 
* @orm:OneToOne(targetEntity="State") 
* @orm:JoinColumn(name="state_id", referencedColumnName="id") 
*/ 
protected $state; 

편집 : Symfony2 베타 2에 도입 된 변화와은, 주석이 조금 변경되었습니다. 특수 효과를 사용하기 전에 주석을 가져와야합니다. 수입 교리는 다음과 같습니다

use Doctrine\ORM\Mapping as ORM; 

그런 다음 새로운 사용법은 다음과 같습니다

/** 
* @ORM\OneToOne(targetEntity="State") 
* @ORM\JoinColumn(name="state_id", referencedColumnName="id") 
*/ 
protected $state; 

주석 시스템에 추가 변경의 some discussion있다; 이러한 변경 사항이 적용되면 다른 수정 사항이 적용됩니다.

+0

답장을 보내 주셔서 감사합니다. 귀하의 지시에 따라 모든 '@orm'주석을 'orm'으로 변경했습니다. 그런 다음 'code'php app/console doctrine : schema : create'code'명령을 실행하고 'code'No 메타 데이터 클래스를 처리하십시오.'코드 '메시지. 테이블은 생성되지 않습니다. 어떤 생각? – Zeck

+0

새 엔티티로 질문을 업데이트 할 수 있습니까? (예 : 기존 예제를 현재 모양으로 바꿀 수 있습니까?) – Problematic

+0

고맙습니다. 너는 나의 날을 구한다. – Zeck

관련 문제