2016-04-25 66 views
0

我想重寫實體字段屬性。我需要從另一個數據庫表(通過ID映射)獲取數據。它應該是來自另一個數據庫表的「artikelnummer」和一個名爲「name」的字段的組合。Symfony 2覆蓋實體字段屬性

$builder->add('schlauch', 'entity', array(
    'class' => 'SchlauchBundle:Artikelspezifikation', 
    'property' => 'artikelnummer', 
    'attr' => array(
     'class' => 'extended-select' 
    ), 
    'data_class' => null  
)); 

字段「產品編號」輸出像「12345」,但我需要添加名稱(從被稱爲「schlauch」另一個數據庫表),所以它應該看起來像「12345 ArticleName的」。我在實體文件中嘗試了一個查詢,但我不想在任何地方操縱輸出。

是否可以使用查詢屬性並覆蓋它?

回答

0

您可以簡單解決,通過添加新的getter你的實體:

class Artikelspezifikation 
{ 
    //… 

    /** 
    * @var Schlauch 
    * 
    * @ORM\ManyToOne(targetEntity="Schlauch", inversedBy="artikelspezifikations") 
    */ 
    private $schlauch; 

    //… 

    /** 
    * Get display name 
    * 
    * @return string 
    */ 
    public function getDisplayName() 
    { 
     return $this->artikelnummer . ' ' . $this->schlauch->getArtikelName(); 
    } 

    //… 

    /** 
    * Set schlauch 
    * 
    * @param \SchlauchBundle\Entity\Schlauch $schlauch 
    * 
    * @return Artikelspezifikation 
    */ 
    public function setCategory(\SchlauchBundle\Entity\Schlauch $schlauch = null) 
    { 
     $this->schlauch = $schlauch; 

     return $this; 
    } 

    /** 
    * Get schlauch 
    * 
    * @return \SchlauchBundle\Entity\Schlauch 
    */ 
    public function getCategory() 
    { 
     return $this->schlauch; 
    } 
} 

而在你的窗體類只是改變屬性:

$builder->add('schlauch', 'entity', array(
    'class' => 'SchlauchBundle:Artikelspezifikation', 
    'property' => 'displayName', 
    'attr' => array(
     'class' => 'extended-select' 
    ), 
    'data_class' => null  
)); 
+0

謝謝,快速的答案。我如何獲得「$ this-> schlauch」作爲對象?我只有這個ID。 – ReAlPeNx

+0

我試過這個,但它只返回id而不是對象。我之前用ArrayCollection做過一些事情,而且工作。但只存儲在數據庫中的id,並得到完整的相關實體不起作用。在控制器中,我可以得到一切,但在實體文件中它似乎是一個問題。 – ReAlPeNx

+0

閱讀[Doctrine中對象間的關聯](http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/association-mapping.html)。 – jkucharovic