教义如何为自我引用关系编写固定装置

时间:2011-07-20 14:42:14

标签: php doctrine entity-relationship fixtures doctrine-1.2

我在为Doctrine 1.2中的自引用关系定义装置时遇到了麻烦,假设我使用the code from the manual,如何为此编写灯具?

我试过这个夹具文件

User:
  JohnDoe:
    username: "john doe"
  MarkSmith:
    username: "mark smith"
    Friends: [ JohnDoe ]

但是当我运行doctrine load任务时,我得到了以下错误信息:

Catchable fatal error: Argument 2 passed to Doctrine_Record::setFriends() must be an instance of Doctrine_Access, none given

我会尝试在FriendReference夹具中传递用户,但我不知道该怎么做,因为FriendReference没有明确声明关系,所以我不能做这样的事情

FriendReference:
  First:
    ???: [ JohnDoe, MarkSmith ]

FriendReference:
  First:
    User1: JohnDoe
    User2: MarkSmith

更新

以下是取自manual

的示例架构
---
# schema.yml

# ...
User:
# ...
  relations:
    # ...
    Friends:
      class: User
      local: user1
      foreign: user2
      refClass: FriendReference
      equal: true

FriendReference:
  columns:
    user1:
      type: integer
      primary: true
    user2:
      type: integer
      primary: true

1 个答案:

答案 0 :(得分:0)

我刚刚找到了解决这个问题的方法,我需要在我的架构文件中引入两个冗余关系。架构中的引用表变为

FriendReference:
  columns:
    user1:
      type: integer
      primary: true
    user2:
      type: integer
      primary: true
  relations: # <-- ADDED RELATIONS
    User1:
      class: User
      local: user1
    User2:
      class: User
      local: user2

根据这个定义,我可以用这种方式指定灯具

FriendReference:
  First:
    User1: JohnDoe
    User2: MarkSmith

这很简单......