Учение о том, как писать приспособления для самореферентных отношений - PullRequest
1 голос
/ 20 июля 2011

У меня проблемы с определением приборов для самореферентных отношений в Doctrine 1.2. Предположим, я использую код из руководства , как написать приспособления для этого?

Я пытался с этим файлом приспособления

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

но когда я запускаю задачу загрузки доктрины, я получаю это сообщение об ошибке:

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

Обновление

Вот пример схемы, взятой из руководства

---
# 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 голосов
/ 30 сентября 2011

Я только что нашел решение для этой проблемы, мне нужно было ввести два избыточных отношения в моем файле схемы.Таблица ссылок в схеме становится

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

Это было так просто ...

...