2013-02-08 1 views
2

나는 지역 법인 및 regionEmploymentDetails, regionEducationDetails, 지역 고용, 교육 및 전력 세부 사항을 유지 regionPowerDetails 개체가 있습니다. 엔티티는 다른 데이터를 보유하기 때문에 별도로 유지됩니다. 스키마 : 갱신이 데이터베이스 테이블을 생성하지만, 만에 지역 법인에 관한교리 oneToOne 매핑 데이터베이스 스키마 사람들을 관련이없는

--force 아래는 내가 스키마를 사용하여 명령

의 PHP 응용 프로그램/콘솔 교리를 생성 할 때

class Region 
{ 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    *@ORM\OneToOne(targetEntity="RegionEducationDetails") 
     @ORM\JoinColumn(name="region_id", referencedColumnName="id") 
    **/ 

    private $education_details; 

    /** 
    *@ORM\OneToOne(targetEntity="RegionEmploymentDetails") 
     @ORM\JoinColumn(name="region_id", referencedColumnName="id") 
    **/ 

    private $employment_details; 

    /** 
    *@ORM\OneToOne(targetEntity="RegionPowerDetails") 
     @ORM\JoinColumn(name="region_id", referencedColumnName="id") 
    **/ 

    private $power_details; 
} 

class RegionEducationDetails 
{ 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="region_id", type="integer", length=20) 
    */ 
    private $region_id; 
} 

class RegionEmploymentDetails 
{ 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="region_id", type="integer") 
    */ 
    private $region_id; 
} 

class RegionPowerDetails 
{ 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="region_id", type="integer") 
    */ 
    private $region_id; 
} 

문제는, 클래스이다 RegionPowserDetails 엔터티는 다른 엔터티와 관련이 없습니다.

는 마지막 매핑을 고려하고 그래서 마지막 엔티티와 관련이 보인다. 파워 엔티티 관계를 제거하면 파워 이전의 엔티티와 관련됩니다 (즉, 고용).

나는 아무 잘못을하고 있습니까? 이 문제에 대한 해결책이 있습니까? 이름 = "REGION_ID을"-

+2

당신은 당신의 지역 기업에 대한 3 개 동일한 foreging 키 이름이 있습니다. 데이터베이스는 동일한 foregin 키 이름을 가진 하나의 테이블을 작성하지 않습니다. foregin 키 이름을 변경하십시오. –

답변

1

지역 클래스가 있어야

class Region { 

/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 


private $education_details_id; 

/** 
*@ORM\OneToOne(targetEntity="RegionEducationDetails") 
    @ORM\JoinColumn(name="education_details_id", referencedColumnName="id") 
**/ 

private $education_details; 


private $employment_details_id; 

/** 
*@ORM\OneToOne(targetEntity="RegionEmploymentDetails") 
    @ORM\JoinColumn(name="employment_details_id", referencedColumnName="id") 
**/ 

private $employment_details; 


private $power_details_id; 

/** 
*@ORM\OneToOne(targetEntity="RegionPowerDetails") 
    @ORM\JoinColumn(name="power_details_id", referencedColumnName="id") 
**/ 

private $power_details; 

}