Doctrine 2名称空间问题

时间:2013-03-05 16:17:44

标签: namespaces doctrine-orm

我正在使用Zend Framework 1与Bisna库集成Doctrine 2.我使用Doctrine 2 CLI从我的数据库模型生成了我的实体。除了相关记录的setter方法之外,这一切都正常。他们接受的参数必须是特定的命名空间(\Category)。

class Article
{
    public function setCategory(\Category $category = null) {
        $this->category = $category;
        return $this;
    }
}

然而,当我这样做时:

$article    = $this->em->getRepository('\Application\Entity\Article')->find(1);

$category   = new \Application\Entity\Category();
$category->SetName('New Category');

$article->setCategory($category);

我收到以下致命错误:Argument 1 passed to Application\Entity\CategoryField::setCategory() must be an instance of Category, instance of Application\Entity\Category given

当我将setter方法更改为接受\Application\Entity\Category个对象时,它当然正在工作。我应该为每个生成的方法执行此操作,还是有其他选项?这是我第一次使用命名空间,所以它可能很简单。

1 个答案:

答案 0 :(得分:0)

您始终可以将其添加到您的班级文件的顶部:use \Application\Entity\Category;,然后只需稍后引用它:public function setCategory(Category $category = null)

结帐:http://php.net/manual/en/language.namespaces.importing.php了解有关use

的更多信息

否则你必须引用完整的命名空间,否则你的应用程序不知道\Category是对\Application\Entity\Category的引用