Doctrine ManyToOne,此对象中缺少信息


Doctrine ManyToOne with information missing in this object

我试图用一个非常旧的数据库启动并运行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实体中,它是外键,而不是主键。

如果你想让问题更清楚,请显示你的所有实体及其关键定义。