symfony2使用参数形成querybuilder [英] symfony2 form querybuilder with parameters

查看:138
本文介绍了symfony2使用参数形成querybuilder的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

   - > add('weeks', 'entity',array(
'class'=>'MV \CaravanBundle\Entity\CaravanRow',
'property'=>'line',
'query_builder' =>函数(EntityRepository $ er)use($ caravan){
return $ er-> createQueryBuilder('w')
- > orderBy('w.dateFrom','ASC')
- > where('w.caravan =?',$ caravan)
- > andWhere('w.visible = 1')
- > andWhere('w.booked = 0');
}

但是收到信息:


在此上下文中不允许使用'Entity \ Name'类型的表达式



解决方案

您应该设置参数ter分别是这样的:

   - > add('weeks','entity',array(
'class '=> 'MV \CaravanBundle\\Entity\CaravanRow',
'property'=> 'line',
'query_builder'=>函数(EntityRepository $ er)use($ caravan){
return $ er-> createQueryBuilder('w')
- > orderBy('w.dateFrom','ASC')
'>其中('w.caravan =?1')
- >和其中('w.visible = 1')
- >和其中('w.booked = 0')
- > setParameter(1,$ caravan);
}

您可以使用整数或字符串,但语法略有不同每。请参阅文档


I want to put my entity in the function of the query builder:

->add( 'weeks', 'entity', array(
    'class' => 'MV\CaravanBundle\Entity\CaravanRow',
    'property' => 'line',
    'query_builder' => function(EntityRepository $er ) use ( $caravan ) {
        return $er->createQueryBuilder('w')
                  ->orderBy('w.dateFrom', 'ASC')
                  ->where('w.caravan = ?', $caravan )
                  ->andWhere('w.visible = 1')
                  ->andWhere('w.booked = 0');
}

but get the message:

Expression of type 'Entity\Name' not allowed in this context

So what is the (best) way to give the querybuilder information.

解决方案

You should set the parameter separately like so:

->add( 'weeks', 'entity', array(
    'class' => 'MV\CaravanBundle\Entity\CaravanRow',
    'property' => 'line',
    'query_builder' => function(EntityRepository $er ) use ( $caravan ) {
        return $er->createQueryBuilder('w')
                  ->orderBy('w.dateFrom', 'ASC')
                  ->where('w.caravan = ?1')
                  ->andWhere('w.visible = 1')
                  ->andWhere('w.booked = 0')
                  ->setParameter(1, $caravan);
}

You can either use an integer or string, but the syntax is slightly different for each. See the docs

这篇关于symfony2使用参数形成querybuilder的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆