簡體   English   中英

Doctrine2關聯的獲取器

[英]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() 

代替

並且: https : //en.wikipedia.org/wiki/Don%27t_repeat_yourself

提供的兩個答案都是絕對正確的。 但是,請考慮到,如果您使用的是延遲加載,則每次調用getCityName都會觸發一個額外的查詢,除非您在DQL /查詢生成器中使用了JOIN。

如果您在循環中調用getCityName,可能會遇到嚴重的性能問題,因此我認為值得一提。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM