2016-04-25 2 views
0

Я хочу переопределить свойство поля объекта. Мне нужно получить данные из другой таблицы базы данных (отображаемой по id). Это должна быть комбинация «artikelnummer» и поле «имя» из другой таблицы базы данных.Symfony 2 переопределяет свойство поля объекта

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

Поле «artikelnummer» выдает что-то вроде «12345», но мне нужно, чтобы добавить имя (из другой таблицы базы данных под названием «SCHLAUCH»), поэтому она должна выглядеть «12345 Articlename». Я попробовал запрос в файле сущности, но я не хочу манипулировать выводами везде.

Возможно ли использовать запрос для свойства и переопределить его?

ответ

0

Вы можете просто решить, что при добавлении нового добытчика к вам объекта:

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» как объект? Я получил только идентификатор. – ReAlPeNx

+0

Я пробовал это, но он возвращает только идентификатор, а не объект. Я делал что-то раньше с ArrayCollection, и это сработало. Но только хранить идентификатор в базе данных и получить полный связанный объект не работает. В контроллере я могу получить все, кроме файла сущности, это проблема. – ReAlPeNx

+0

Прочитайте что-нибудь о [связывании объектов в Доктрине] (http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/association-mapping.html). – jkucharovic

Смежные вопросы