我正在Symfony2中创建一个表单,我想用自定义查询的结果填充下拉列表。这是一个示例PHP代码:
<?php
public function buildForm(FormBuilder $builder, array $options)
{
$builder
//...
->add('type', 'entity', array(
'class' => 'EventBundle:Event',
'query_builder' => function (EntityRepository $er) {
return $er
->createQueryBuilder('e')
->add('select', 'e.id, CONCAT(IF (e.modified > NOW(), "Pending: ", ""), e.name) as name')
;
}
))
;
}
?>
我找不到设置此SELECT子句的方法。我期待类似于&#34;新的Zend_Db_Expr(...)&#34;在Zend Framework中。 有没有办法用复杂的SELECT子句创建这个查询,并将其键入为本机SQL代码?
提前谢谢!
答案 0 :(得分:0)
嗯,您提供的查询应该是DQL,而不是SQL。
看看IF()是如何not valid DQL,我不知道你能做些什么来解决这个问题。也许让Entity类本身通过property option?
进行连接public function buildForm(FormBuilder $builder, array $options)
{
$builder
//...
->add('type', 'entity', array(
'class' => 'EventBundle:Event',
'property' => 'modifiedName',
))
;
}
然后在EventBundle \ Entity \ Event
中public function getModifiedName()
{
return $this->modified > new \DateTime()
? 'Pending: ' . $this->getName()
: $this->getName()
;
}