2016-04-25 5 views
0

Ich möchte die Entität Feldeigenschaft überschreiben. Ich muss Daten von einer anderen Datenbanktabelle erhalten (durch Identifikation gekennzeichnet). Es sollte eine Kombination aus "artikelnummer" und einem Feld namens "name" aus einer anderen Datenbanktabelle sein.Symfony 2 überschreiben Einheit Feldeigenschaft

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

Das Feld „Artikelnummer“ gibt so etwas wie „12345“ aber ich brauche den Namen hinzufügen (aus einer anderen Datenbanktabelle namens „schlauch“), so dass es wie „12345 Artikelname“ aussehen sollte. Ich habe eine Abfrage in der Entity-Datei versucht, aber ich möchte die Ausgabe nicht überall manipulieren.

Ist es möglich, eine Abfrage für die Eigenschaft zu verwenden und sie zu überschreiben?

Antwort

0

Sie können so einfach lösen, indem sie neue Getter Sie Entität hinzu:

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

Und in Ihrer Formularklasse nur Eigenschaft ändern:

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

Danke für die schnelle Antwort. Wie bekomme ich "$ this-> schlauch" als Objekt? Ich habe nur die ID. – ReAlPeNx

+0

Ich habe das versucht, aber es gibt nur die ID und nicht das Objekt zurück. Ich habe vorher mit ArrayCollection etwas gemacht, und das hat funktioniert. Aber speichern Sie die ID nur in der Datenbank und erhalten Sie die gesamte verbundene Einheit funktioniert nicht. Im Controller kann ich alles bekommen, aber in der Entity-Datei scheint es ein Problem zu sein. – ReAlPeNx

+0

Lesen Sie etwas über [Assoziation zwischen Objekten in Doctrine] (http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/association-mapping.html). – jkucharovic