2014-08-30 3 views
0

Я хочу сохранить оценки пользователей для игры.Doctrine oneToMany без сопоставления - YML

Например: Battlefield 4 is game, Пользователь является пользовательской и пользователь имеет 10 рейтинг для этой игры.

Как я могу это сделать без использования сопоставленного атрибута для oneToMany?

Мой YML (в пользовательских и игровых orm.yml файлов):

oneToMany: 
    ratings: 
     targetEntity: CS\GamingBundle\Entity\Rating 
     cascade: ["all"] 
     fetch: EXTRA_LAZY 
+0

Если я хорошо понимаю, что вы хотите (вы хотите иметь альтернативу для хранения рейтингов без отношения oneToMany), вы можете сохранить его непосредственно в пользовательском сущности, добавляя свойство 'rating' (array on db). –

+0

Прошу прощения, я не могу сказать вам, что это ясно. Я хочу сохранить рейтинги на таблице: game_user_ratings с полями user_id, game_id и рейтинга. Я хочу установить связь между этими тремя объектами (пользователем, игрой, рейтингом). Я не знаю, как обойтись без использования mappedBy с помощью oneToMany. –

ответ

0

Я предполагаю, что вы не хотите, чтобы отобразить отношения, потому что вы беспокоитесь о загрузке во всех рейтингах, когда вам загрузить пользователя (отсюда fetch: EXTRA_LAZY)? Использование EXTRA_LAZY должно означать, что дополнительных накладных расходов нет, поэтому беспокоиться не о чем.

Вы можете просто добавить отношение manyToOne к объекту Rating без взаимозаменяемых отношений oneToMany.

В противном случае вам нужно создать менеджер + репо и сделать все вручную. ИМО не стоит того, чтобы использовать ORM.

Смежные вопросы