Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未调用自定义函数的原始SQL_Php_Mysql_Symfony_Doctrine Orm - Fatal编程技术网

Php 未调用自定义函数的原始SQL

Php 未调用自定义函数的原始SQL,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,在使用原始SQL时,从Doctrine调用数据库中的自定义函数时遇到问题 下面是一个正在运行的SQL查询示例 SELECT unicodeDecoder(answer) from answers; unicodeDecoder是我数据库中自定义的函数,当我直接在数据库上运行SQL语句时,它运行得非常好 但是,当我使用原始sql运行查询时,如下所示: $sql = "SELECT unicodeDecoder(answer) from answers"; $stmt = $this->g

在使用原始SQL时,从Doctrine调用数据库中的自定义函数时遇到问题

下面是一个正在运行的SQL查询示例

 SELECT unicodeDecoder(answer) from answers;
unicodeDecoder
是我数据库中自定义的函数,当我直接在数据库上运行SQL语句时,它运行得非常好

但是,当我使用原始sql运行查询时,如下所示:

$sql = "SELECT unicodeDecoder(answer) from answers";
$stmt = $this->getEntitityManager()->getConnection()->prepare($sql);
$stmt->execute();
我得到以下错误:

SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION unicodeDecoder does not exist
使用自定义函数时是否需要创建自定义ORM映射,或者这可能是某种形式的缓存问题

任何帮助都将不胜感激


提前感谢

尝试在函数前面加上数据库名称:

$sql = "SELECT my_db.unicodeDecoder(answer) from answers";

如果发现问题。感谢@alex blex为我提供了开始寻找的地方

我的数据库在名称中有一个
cms.app.com

问题是由

当条令试图访问该方法时,它会自动将数据库名称附加到开头

当我尝试将
cms.app.com
添加到开头时(正如@alex blex所建议的),它创建了以下方法调用(这是错误的语法)

我尝试了以下方法

`cms.app.com`.unicodeDecoder,但这仍然解决了

cms.app.com.unicodeDecoder() 
我从数据库名称中删除了
,现在它可以正常工作了


重要注意事项:请勿在数据库名称中使用
,因为Doctorine无法正确解析名称,因为`符号被去除。

不幸的是,这不起作用。它只是抱怨有相同的错误,但是该方法现在在错误中以数据库名称作为前缀。检查您使用的是正确的用户(检查权限)嗨,Matteo,我使用的是正确的用户,因为所有其他查询都在正常工作。谢谢
cms.app.com.unicodeDecoder()