我在OneToMany关系中映射了2个实体。
国家实体
class Countries
{
public function __construct() {
$this->areas = new ArrayCollection();
}
/**
* @ORM\Column(type="string", length=100, nullable=false, unique=true)
*/
private $country
/**
* @ORM\OneToMany(targetEntity="App\Entity\Areas", mappedBy="country")
*/
private $areas;
/**
* @return Collection\Area[]
*/
public function getAreas() {
return $this->areas;
}
}
区域实体
class Areas
{
/**
* @ORM\Column(type="string", length=100, nullable=false, unique=false)
*/
private $area;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Countries", inversedBy="area")
* @ORM\JoinColumn(nullable=true)
*/
private $country;
public function getCountry() : Countries {
return $this->country;
}
public function setCountry(Countries $countries) {
$this->country = $countries;
}
}
在我的MySQL中,我看到它们是按国家/地区ID映射的,因此在db 1中,记录看起来像
1 2法兰西岛
我要插入国家名称
1法国法兰西岛大区
在哪里可以设置要在映射中使用的列?
我知道我总是可以执行$ country-> getName($ id),但是我更喜欢在DB中有清晰的视图。
感谢您的所有回复。
最佳答案
这是这样做的,但是无论如何您都应该保留id
。
否则,当您在控制台中检查关联映射时,它将显示“错误”
区域实体
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Countries", inversedBy="area")
* @ORM\JoinColumn(name="country", referencedColumnName="country", nullable=true)
*/
private $country;
关于php - 按自定义列映射实体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49039594/