2010-06-01 3 views
0

Итак, у меня есть 2 модели. Пользователи и группы. У каждой группы есть пользователь как создатель, и у группы есть много пользователей. FK этих таблиц настроен правильно, но мне было интересно, есть ли более простой способ получить все связанные объекты FK из других объектов. Например, с объектом группы существует встроенный метод для получения пользовательского объекта создателя? Или для пользователя, есть ли встроенный метод для получения всего объекта группы, к которому он принадлежит? Я не мог понять, как это сделать с документацией на странице symfony. Из того, что я вижу, я чувствую, что мне нужно создавать методы и использовать доктрину для доступа к соответствующим таблицам с использованием текущего идентификатора объектов и т. Д.Модели Symfony с внешними ключами

Спасибо!

Некоторые образцы схемы:

Group: 
    actAs: { Timestampable: ~ } 
    columns: 
    name: { type: string(500), notnull: true } 
    image: { type: string(255) } 
    type: { type: string(255), notnull: true } 
    created_by_id: { type: integer } 
    relations: 
    User: { onDelete: SET NULL, class: User, local: created_by_id, foreign: id, foreignAlias: groups_created } 

ответ

4

Вы должны показать нам свой код для достойного ответа, но это будет что-то вроде ниже.

YAML:

Group: 
    columns: 
     .......... 
     creator_id:  { type: integer(4), notnull: true } 
    relations: 
     Creator:  { class: User, local: creator_id, foreign: id } 

PHP:

$user = $group->getCreator(); 
+0

Спасибо! так есть ли какая-то часть документации, в которой обсуждается, как использовать эти «магические» методы? И что, если я захочу изменить способ назвать это. Вместо getCreatedBy(). Смогу ли я сделать какой-то псевдоним или просто еще один метод getter, который его обертывает? Еще раз спасибо! – Danny

+2

См. Http://www.symfony-project.org/jobeet/1_4/Doctrine/en/03 и http://www.symfony-project.org/jobeet/1_4/Doctrine/en/06 –

+0

Жаль вас беспокоить еще раз. Я пытаюсь получить доступ к создателю, выполнив $ this-> getCreatedBy(), и он не работает. Есть идеи? – Danny

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