Php 如何解决模型管理器中无法重新声明类的错误?

Php 如何解决模型管理器中无法重新声明类的错误?,php,dependency-injection,phalcon,Php,Dependency Injection,Phalcon,我想使用Phalcon Php提供的模型管理器执行一个查询。我有以下功能: public function getSomeData() { return Di::getDefault()->get("modelsManager")->executeQuery( "SELECT * FROM SomeModel WHERE id NOT IN (SELECT id FROM AnotherModel)" ); } } 当执行上述

我想使用Phalcon Php提供的模型管理器执行一个查询。我有以下功能:

public function getSomeData()
{
    return Di::getDefault()->get("modelsManager")->executeQuery(
            "SELECT * FROM SomeModel WHERE id NOT IN (SELECT id FROM AnotherModel)"
        );
    }
}
当执行上述函数时,我得到以下错误

无法重新声明类ParentDir\Model\SomeModel

但是,如果我为查询提供完整的名称空间,它就会工作

SELECT * FROM ParentDir\Model\SomeModel WHERE id NOT IN (SELECT id FROM ParentDir\Model\AnotherModel)
我正在
di
中注册
dirs
namespace
,如下所示:

$parentDir = dirname(__DIR__);

$loader = new Loader();

$loader->registerDirs([
    $parentDir . "/app/controllers",
    $parentDir . "/app/models"
]);

 $loader->registerNamespaces([
    "ParentDir\\Model" => "$parentDir/app/models/",
    "ParentDir\\Model\\Enum" => "$parentDir/app/models/enum/",
    "ParentDir\\Controller" => "$parentDir/app/controllers/",
    "ParentDir\\Service" => "$parentDir/app/services/",
    "ParentDir\\Locale" => "$parentDir/app/locale/",
    "ParentDir\\Utility" => "$parentDir/app/utility/",
    "ParentDir\\Plugin" => "$parentDir/app/plugin/",
    "ParentDir" => "$parentDir/app/",
]);

$loader->register();

您是否尝试过为命名空间创建别名


未能使用modelsManager->createQuery并使用纯sql。

它不是modelsManager,您只是在某处用loader加载了这个类两次。或者您有两个相同的类。

“但是,如果我为查询提供完整的名称空间,它就会工作。”
那么就这样做吧?@Timothy这样做会使查询工作。但是,我会忽略依赖关系注入器中存在问题这一事实。官方文档不包含完整的名称空间,因为它是
modelsManager
的工作。