0

我在我的 PHP 项目中使用 Doctrine ORM。

在我的一个查询中,我使用了“COS”(余弦)和“SIN”(正弦)函数,为了在 Doctrine 上实现这一点,我必须将其添加到我的 entitymanager 配置中:

$config->addCustomNumericFunction('COS', 'DoctrineExtensions\Query\Mysql\cos');
$config->addCustomNumericFunction('SIN', 'DoctrineExtensions\Query\Mysql\sin');

当我在本地 PC + 服务器上运行它时,这工作正常。

但是,一旦我将项目放在在线网络服务器上,我就会遇到以下错误:

Fatal error: Class 'DoctrineExtensions\Query\Mysql\cos' not found in /home/USER/domains/USER.com/public_html/MYDIRECTORY/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php on line 3418

Fatal error: Class 'DoctrineExtensions\Query\Mysql\sin' not found in /home/USER/domains/USER.com/public_html/MYDIRECTORY/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php on line 3418

它在 'vendor\doctrine' 目录而不是 'vendor\beberlei\DoctrineExtensions' 目录中查找。

我的作曲家包含:

"beberlei/DoctrineExtensions": "dev-master"

供应商自动加载器包含:

'DoctrineExtensions\\' => array($vendorDir . '/beberlei/DoctrineExtensions/src')

谁能向我解释一下...我尝试添加一个类加载器,但仍然是同样的问题。

本地主机工作正常...

4

1 回答 1

0

在我使用的 entitymanager 配置中添加正弦和余弦函数时:

$config->addCustomNumericFunction('COS', 'DoctrineExtensions\Query\Mysql\cos');
$config->addCustomNumericFunction('SIN', 'DoctrineExtensions\Query\Mysql\sin');

上述解决方案适用于本地 PC + 服务器。

将项目文件移动到网络服务器时,上述配置将不起作用。

您必须将最后一个单词的第一个字母更改DoctrineExtensions namespace为大写,如下所示:

$config->addCustomNumericFunction('COS', 'DoctrineExtensions\Query\Mysql\Cos');
$config->addCustomNumericFunction('SIN', 'DoctrineExtensions\Query\Mysql\Sin');

基本上cos变成Cossin变成Sin

现在它可以在在线网络服务器上运行。终于让它工作了!

于 2015-08-28T14:12:54.303 回答