1

我正在使用 Zend Framework 1 和 Bisna 库来集成 Doctrine 2。我使用 Doctrine 2 CLI 从我的数据库模型生成了我的实体。这一切都很好,除了关联记录的设置方法。他们接受的参数必须是一个特定的命名空间(\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对象时,它当然可以工作。我应该为每个生成的方法都这样做,还是有其他选择?这是我第一次使用命名空间,所以可能很简单。

4

1 回答 1

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

于 2013-05-17T17:00:14.140 回答