我在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/

10-16 14:54