Отношения один-два в Учении с YAML - PullRequest
3 голосов
/ 11 мая 2010

Я работаю над своим первым проектом Symfony с Doctrine, и я столкнулся с проблемой. Я пытаюсь выразить игру с двумя игроками. Я хочу установить отношения между PlayerOne и PlayerTwo, каждый из которых привязан к идентификатору в таблице Users. Это часть того, что я получил до сих пор:

Game:
  actAs: { Timestampable:- }
  columns:
    id: { type: integer,  notnull: true, unique: true }
    startDate: { type: timestamp, notnull: true }
    playerOne: { type: integer, notnull: true }
    playerTwo: { type: integer, notnull: true }
    winner: { type: integer, notnull:true, default:0 }
  relations:
    User: { onUpdate: cascade, local: playerOne, foreign: id}
    User: { onUpdate: cascade, local: playerTwo, foreign: id}

Это не работает. Он прекрасно работает, но генерируемый им SQL включает только ограничение для playerTwo. Я пробовал несколько других вещей:

User: { onUpdate: cascade, local: [playerOne, playerTwo], foreign: id}

Также:

    User: [{ onUpdate: cascade, local: playerOne, foreign: id}, { onUpdate: cascade, local: playerTwo, foreign: id}]

Последние две ошибки при попытке собрать. Есть ли кто-нибудь, кто понимает, что я пытаюсь сделать, и может помочь мне достичь этого?

Ответы [ 2 ]

6 голосов
/ 11 мая 2010

Попробуйте разные имена для отношений:

  relations:
    UserOne: { onUpdate: cascade, local: playerOne, foreign: id, class: User }
    UserTwo: { onUpdate: cascade, local: playerTwo, foreign: id, class: User }

Отредактировано: также добавлено примечание «класс: Пользователь», который явно говорит о типе отношения.

1 голос
/ 11 мая 2010

Если вы скажете $ game-> getUser (), неясно, на какого пользователя вы ссылаетесь. Так как они ссылаются на одну и ту же таблицу, вам нужно дать двум отношениям разные имена и объявить для них два разных постовых имени. По сути, ваша игровая таблица должна иметь возможность ссылаться на каждое отношение с другим именем (например, UserOne, UserTwo) и наоборот. В противном случае это запутает Доктрину, и отношения не будут установлены правильно.

У меня раньше была похожая проблема ... использование MySQL Workbench для генерации визуального представления схемы после построения моделей помогло убедиться, что все отношения были точно такими, как нужно.

Надеюсь, это поможет.

...