0

PHP プロジェクトで Doctrine ORM を使用しています。

私のクエリの 1 つで、'COS' (コサイン) と 'SIN' (サイン) 関数を使用しています。Doctrine でこれを可能にするために、これを私の entitymanager 設定に追加する必要があります:

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

これは、ローカル PC + サーバーで実行すると問題なく動作します。

しかし、プロジェクトをオンライン Web サーバーに配置すると、次のエラーに直面します。

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\beberlei\DoctrineExtensions」ディレクトリではなく、「vendor\doctrine」ディレクトリを探しています。

私の作曲家には以下が含まれています:

"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 + サーバーで動作しています。

プロジェクト ファイルを Web サーバーに移動する場合、上記の構成は機能しません。

次のように、最後の単語の最初の文字DoctrineExtensions namespaceを大文字に変更する必要があります。

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

基本的にcosCosになり、sinSinになります。

現在、オンライン Web サーバーで動作します。ついに稼働しました!

于 2015-08-28T14:12:54.303 に答える