使用整数数据类型查询错误(Doctrine 2)

时间:2016-02-12 11:51:39

标签: php postgresql symfony doctrine-orm casting

我正在使用Symfony2和Doctrine 2开发一个应用程序。

技术规格

我正在使用Symfony 2.7.1

我正在使用PostgreSQl 1.18.1

我正在使用AliDatatableBundle 2.0

我有一个使用AliDatatableBundle生成的表,它允许我使用下面的图像搜索框​​来过滤表字段。

table

嗯,问题是,当我尝试过滤整数字段时,symfony失败并显示错误:

  

执行'SELECT count(s0_.id)时发生异常AS sclr0 FROM Subministrament s0_ INNER JOIN Abonat a1_ ON s0_.abonat_subministrament = a1_.id WHERE s0_.id LIKE?'与params [“%12%”]:

     

SQLSTATE [42883]:未定义的函数:7错误:运算符不存在:整数~~未知   第1行:... ON s0_.abonat_subministrament = a1_.id WHERE s0_.id LIKE $ 1   ^   提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。

错误是因为我正在使用带有整数字段的like命令。好吧,如果你可以使用强制转换命令转换文本数据类型中的整数字段,但是我正在使用Doctrine 2,如果我在查询中放置了强制转换,Symfony失败,因为强制转换命令不是一个已知的教义函数。我搜索了具有强制命令支持的教义扩展,但Symfony也失败了。

我尝试使用的代码是Alidatatables的代码。以下是失败的代码部分。

protected function _addSearch(\Doctrine\ORM\QueryBuilder $queryBuilder) {
    if ($this->search == TRUE) {
        $request = $this->request;
        $search_fields = array_values($this->fields);
        foreach ($search_fields as $i => $search_field) {
            $search_param = $request->get("sSearch_{$i}");
            if ($search_param !== false && $search_param != '') {
                $field = explode(' ', trim($search_field));
                $search_field = $field[0];

                    $queryBuilder->andWhere("$search_field  like :ssearch{$i} ");
                    $queryBuilder->setParameter("ssearch{$i}", '%' . $request->get("sSearch_{$i}") . '%');


            }
        }
    }
}

0 个答案:

没有答案