我试图用一个非常旧的数据库启动并运行zf2 doctrine2项目(这一点不能做太多更改,因为它为一个旧的php项目服务)。
我有一张桌子"网"与:
- webID
- pID
- 名称
表"p_news_category"包含:
- id
- pID
- webID
- 名称
表"新闻"与:
- 新闻ID
- webID
- 类别
- 所有权
(bold==主要)
正如您所看到的,新闻没有"pID"(项目id)的信息,但类别表需要它,因为它是主键。
我现在尝试(在我的新闻实体内)
/**
* @var 'Mobil'Entity'Web
*
* @ORM'ManyToOne(targetEntity="Mobil'Entity'Web")
* @ORM'JoinColumns({
* @ORM'JoinColumn(name="webID", referencedColumnName="webID")
* })
* @ORM'Id
* @ORM'GeneratedValue(strategy="NONE")
*/
private $webid;
/**
* @var 'Mobil'Entity'PNewsCategory
*
* @ORM'ManyToOne(targetEntity="Mobil'Entity'PNewsCategory")
* @ORM'JoinColumns({
* @ORM'JoinColumn(name="category", referencedColumnName="id"),
* @ORM'JoinColumn(name="webID", referencedColumnName="webID")
* })
*/
private $category;
但是:Mobil''Entity''PNewsCategory上缺少主键pid值
如何为pID编写@ORM''JoinColumn?
您的新闻实体中已经有了该类别,因此您需要定义新闻和news_category之间的双向关系,其中news作为拥有方,news_cateory作为相反方。
更新:
如果类别中的主键是id
,那么它应该可以工作。正如我从您的问题中了解到的,pId
是指向Project
的密钥,因此在Category
实体中,它是外键,而不是主键。
如果你想让问题更清楚,请显示你的所有实体及其关键定义。