Php 如何修复';你忘了一个“吗?”;使用「;声明[…]和#x27;仅当使用静态方法时才使用Symfony?

Php 如何修复';你忘了一个“吗?”;使用「;声明[…]和#x27;仅当使用静态方法时才使用Symfony?,php,symfony,orm,namespaces,contao,Php,Symfony,Orm,Namespaces,Contao,在Symfony框架中,我试图使用我的一个模型类(特别是一个用于条令ORM的Contao包装器)将一些内容转储到我的数据库中 我的模型有一个use语句,我可以实例化我的模型,甚至可以毫无问题地将它保存到数据库中。但是,当我尝试调用模型类上的静态方法时,我收到错误: Attempted to load class "GenericModel" from the global namespace. Did you forget a "use" statement for "correct\name

在Symfony框架中,我试图使用我的一个模型类(特别是一个用于条令ORM的Contao包装器)将一些内容转储到我的数据库中

我的模型有一个use语句,我可以实例化我的模型,甚至可以毫无问题地将它保存到数据库中。但是,当我尝试调用模型类上的静态方法时,我收到错误:

Attempted to load class "GenericModel" from the global namespace. Did you 
forget a "use" statement for "correct\namespace\GenericModel"?
这对我来说似乎很奇怪,因为当我想要实例化这个类时,它工作得非常好,但是当我试图调用静态函数时,它失败了,并出现了一个名称空间错误

如何更改代码以使用静态函数?如果我遗漏了任何重要信息,请务必让我知道

use correct\namespace\GenericModel;

class GenericClass {
    public function doThing() {
        $genericModel = new GenericModel(); // this works as expected
        $genericModel->setRow([
            'field1' => 'banana',
            'field2' => 'strawberry'
        ]);
        $genericModel->save();

        GenericModel::findBy('field1','banana'); // this line causes the error
    }
}

我在这里找到了问题的解决方案:

它是用德语写的,所以我将对问题的机制做一个快速的总结

静态findBy方法调用集合中调用变量类名函数的方法。本例中的类名为“GenericModel”。由于“GenericModel”不在全局名称空间中,因此出现了上述错误

解决方案是在Contao的配置中注册类名

$GLOBALS['TL_MODELS']['table_name'] = 'namespace\GenericModel';  

试着用static::findBy('field1','banana')代替你试过composer dump autoload吗?