php - Query_builder Symfony 表单生成器错误

标签 php forms symfony

我的表单中有一个实体字段,它以列表的形式显示数据库中的所有表单。这些表格有修订号。我想要做的是仅将表单的最后修订版显示为列表中的选项。

澄清一下,表单如下所示

Id || Name || Revision_number

1  || Form1 || 1

2  || Form1 || 2

选择列表应仅显示修订版 2。

到目前为止,我已经尝试过了

->add('form', 'entity', array(
                'class' => 'AppBundle\Entity\Form',
                'label' => 'label.ship.form',
                'query_builder' => function(EntityRepository $er){
                    return $er->createQueryBuilder('f')
                        ->select('f, MAX(f.revisionNumber) AS max_revision');
                }
            ))

但我收到此错误

Warning: spl_object_hash() expects parameter 1 to be object, string given 

最佳答案

我也遇到过这个问题。

'query_builder' 选项应该返回 Doctrine\ORM\QueryBuilder 或闭包,在你的情况下(如果我错了,有人纠正我),“select”方法也应该返回 Doctrine\ORM\QueryBuilder 对象。奇怪的是……

我所做的是在实体存储库中创建一个返回查询生成器本身的方法:

public function generateStaffRolesQB() {
    $qb = $this->getEntityManager()->createQueryBuilder();
    $qb->select('r')
            ->from('DatabaseModelsBundle:Role', 'r')
            ->where('r.id IN (1, 2)');

    return $qb;
}

在形式中我这样使用它:

'query_builder' => function(EntityRepository $er) {
    return $er->generateStaffRolesQB();
 },

希望有帮助。

关于php - Query_builder Symfony 表单生成器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33544654/

相关文章:

php - bootstrap 2.3 轮播中的多个图像/元素

jquery - 自动将一个表单字段复制到另一个表单字段,但最多复制到某个字符

php - 从 docker 到 websocket 的彩色输出

php - MYSQL 和 PHP 从 2 个不同的表中选择 + 创建一个数组

php - 为什么 mySql 只返回字符串的第一个单词?

php - 防止在 CodeIgniter 中从数据库获取重复数据

javascript - 通过输入表单查询 MongoDB

django - 自定义 Django 管理模板

php - 在 Twig 模板中设置多维数组中单个对象的值

php - Symfony 2 嵌入式表单集合多对多