Reputation: 4083
I have region entity and regionEmploymentDetails, regionEducationDetails, regionPowerDetails entities which hold regions employment, education and power details. Entities are kept separate because they hold different data. Below are classes,
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;
}
The problem is when I generate schema using command
php app/console doctrine:schema:update --force
It generate database tables but relates Region Entity with Only RegionPowserDetails Entity and does not relate other entities.
It seems it considers only the last mapping and so relates only with the last entity. If I remove Power entity relation it relates with Entity which is before power i.e Employment.
Am I doing anything wrong ? Is there any solution to this problem ?
Upvotes: 2
Views: 1699
Reputation: 4083
The region class should be,
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;
}
Upvotes: 1