2016-04-25 13 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  
)); 

フィールド「artikelnummerは」「12345」のようなものを出力しますが、私はそれが「12345 Articlename」のようになりますので、名前(「schlauch」と呼ばれる別のデータベーステーブルから)を追加する必要があります。エンティティファイルでクエリを試しましたが、どこでも出力を操作したくありません。

プロパティのクエリを使用して上書きすることはできますか?

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; 
    } 
} 

そして、あなたのフォームクラスでちょうどプロパティを変更します:

答えて

0

あなたにエンティティを新しいゲッターを追加することによって、という単純な解決することができ

$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

関連する問題