我正在使用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
个对象时,它当然正在工作。我应该为每个生成的方法执行此操作,还是有其他选项?这是我第一次使用命名空间,所以它可能很简单。
答案 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
的引用