Doctrine2两个实体的多个关系

时间:2012-04-17 16:43:25

标签: php orm doctrine-orm

我们正在使用Doctrine v2.2.1。使用YML定义的实体。

这里我有2个实体,它们互相引用给定的关联;

entities\User:
  type: entity
  table: user
  oneToMany:
    subjectNews:
      targetEntity: entities\News
      mappedBy: subjectUser
      cascade: ["all"]
    actionNews:
      targetEntity: entities\News
      mappedBy: actionUser
      cascade: ["all"]

entities\News:
  type: entity
  table: news
  manyToOne:
    subjectUser:
      targetEntity: entities\User
      cascade: ["all"]
      nullable: true
    actionUser:
      targetEntity: entities\User
      cascade: ["all"]
      nullable: true

当我根据这些定义生成Entity类时,我在entity \ User php类中得到了意外的结果。这就像;

 /**
  * Add subjectNews
  *
  * @param entities\News $subjectNews
  * @return User
  */
 public function addNews(\entities\News $subjectNews)
 {
     $this->subjectNews[] = $subjectNews;
     return $this;
 }

我的实体中的setter方法可以按预期生成。但是实体\用户的添加方法没有按预期生成。

我做错了吗?或者有任何解决方法吗?或者它与the issue referred in the Limitations and Known Issues doc of Doctrine2

有关

和平

1 个答案:

答案 0 :(得分:2)

这也是我使用Doctrine ORM遇到的问题之一。虽然我不知道一个优雅的解决方案,我知道你可以使用get方法来获取ORM集合,只需添加你想要的实体。一个例子是,

$actionNews = $user->getActionNews();
$actionNews[] = new entities\News();

subjectNews

$subjectNews = $user->getSubjectNews();
$subjectNews[] = new entities\News();

希望这会有所帮助..