我有两节课: 公司:
class ComCompany
{
/**
* @var integer
*
* @ORM\Column(name="cmp_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $cmpId;
/**
* @var string
*
* @ORM\Column(name="cmp_name", type="string", length=100, nullable=true)
*/
private $cmpName;
/**
* @var integer
*
* @ORM\Column(name="cmp_code", type="integer", nullable=true)
*/
private $cmpCode;
/**
* @var \Catalog\WebBundle\Entity\ComCity
*
* @ORM\ManyToOne(targetEntity="Catalog\WebBundle\Entity\ComCity")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="cmp_city", referencedColumnName="cit_id")
* })
*/
private $cmpCity;
public function getCmpName()
{
return $this->cmpName;
}
public function getCmpCode()
{
return $this->cmpCode;
}
public function getCmpCity()
{
return $this->cmpCity;
}
}
和城市
class ComCity
{
/**
* @var integer
*
* @ORM\Column(name="cit_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $citId;
/**
* @var string
*
* @ORM\Column(name="cit_name", type="string", length=255, nullable=true)
*/
private $citName;
public function getCitId()
{
return $this->citId;
}
public function getCitName()
{
return $this->citName;
}
}
这2个表有关联Company.comCity = City.citId
如何将getter方法添加到ComCompany
类以获取City.citName
?
我有foreign keys
并且正确生成了实体,但是citName
类
Company
的方法
答案 0 :(得分:2)
只需将以下代码添加到ComCompany
类
public function getCityName()
{
return $this->cmpCity->getCitName();
}
答案 1 :(得分:1)
当你已经在ComCity类中使用它时,你不需要这个getter方法。因为添加它(如建议的答案)正在制作重复的代码。你应该使用
$company->getCmpCity()->getCitName()
代替
答案 2 :(得分:1)
提供的两个答案都是绝对正确的。但是,请注意,如果您使用延迟加载,则每次调用getCityName时都会触发额外的查询,除非您在DQL / Query Builder中使用JOIN。
如果你在一个循环中调用getCityName,这可能会产生严重的性能问题,所以我认为值得一提。