[英]Doctrine2 getters for associations
我有2節課:公司:
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
並且Entity正確生成,但是沒有從Company
類獲取citName
方法
只需將以下代碼添加到您的ComCompany
類中
public function getCityName()
{
return $this->cmpCity->getCitName();
}
當您已經在ComCity類中使用此getter方法時,則不需要它。 因為添加它(如建議答案)會使代碼重復。 你應該用
$company->getCmpCity()->getCitName()
代替
提供的兩個答案都是絕對正確的。 但是,請考慮到,如果您使用的是延遲加載,則每次調用getCityName都會觸發一個額外的查詢,除非您在DQL /查詢生成器中使用了JOIN。
如果您在循環中調用getCityName,可能會遇到嚴重的性能問題,因此我認為值得一提。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.