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

时间:2017-08-08 06:21:02

标签: 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)"
        );
    }
}

执行上述功能时,出现以下错误

  

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

但是,如果我为查询提供完整的命名空间,它就可以工作。

SELECT * FROM ParentDir\Model\SomeModel WHERE id NOT IN (SELECT id FROM ParentDir\Model\AnotherModel)

我正在dirs注册namespacesdi,如下所示:

$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();

2 个答案:

答案 0 :(得分:-1)

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

使modelsManager-> createQuery失败并使用纯sql。

答案 1 :(得分:-1)

它不是模特经理,你只是用装载机加载这个类两次。或者你有两个相同的类。