我想覆盖实体字段属性。我需要从另一个数据库表中获取数据(由id映射)。它应该是“artikelnummer”和另一个数据库表中名为“name”的字段的组合。
$builder->add('schlauch', 'entity', array(
'class' => 'SchlauchBundle:Artikelspezifikation',
'property' => 'artikelnummer',
'attr' => array(
'class' => 'extended-select'
),
'data_class' => null
));
字段“artikelnummer”输出类似“12345”的内容,但我需要添加名称(来自另一个名为“schlauch”的数据库表),因此它应该看起来像“12345 Articlename”。我在实体文件中尝试了一个查询,但我不想在任何地方操纵输出。
是否可以对属性使用查询并覆盖它?
答案 0 :(得分: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
));