我正在使用 symfony2 和教义 2 来开发一个网络应用程序。
我在应用程序中有一个表单,它有一个从实体填充的下拉列表。我已经配置了一个 query_builder 来过滤下拉字段中的值。
public function buildForm(FormBuilderInterface $builder, array $options) {
$centerId = $this->centerId;
$builder->add("glCode", "entity", array(
"class" => "MyBundle:GlCode",
"query_builder" => function(EntityRepository $er) use($centerId) {
return $er->createQueryBuilder("g")
->join("g.account", "a")
->where("g.id NOT IN (SELECT g2.id FROM MyBundle:OtherFixedCost c JOIN MyBundle:GlCode g2)")
}
));
此代码产生错误:Expected Doctrine\ORM\Query\Lexer::T_WITH, got ')'
我正在尝试对查询生成器执行与以下DQL相同的操作:
SELECT g FROM MyBundle:GlCode g
JOIN g.account a
WHERE g.id NOT IN (
SELECT g2.id FROM MyBundle:OtherFixedCost c INNER JOIN MyBundle:GlCode g2
)
我不知道我是否遗漏了什么,但显然不存在在表单类中直接使用DQL的方法。所以,我被迫使用QueryBuilder,但我收到了上述错误。