Как связать объекты отношений один-ко-многим? - PullRequest
0 голосов
/ 23 декабря 2011

Я использую Symfony 1.4 с Doctrine ORM. У меня есть два класса, связанных отношением «один ко многим», и у меня есть объект « одна сторона ». Мне нужно связать этот объект, скажем, A, с объектом " many side ", скажем, B. Дело в том, что у A нет метода для добавления только одного объекта в его свойство Doctrine_Collection, но вместо этого он имеет установщик, который получает коллекцию Doctrine_Collection. Как я могу достичь этой ассоциации?

У меня есть что-то вроде:

$a = new A();

$b = new B(); // Obviously, $b is not new, this is just for reference

$a->setB($b); // This is what I can't do. A::setB() receives a 
              // Doctrine_Collection of objects of type B, and I don't
              // know how to build it.

Пожалуйста, любая помощь будет очень признательна !!! спасибо!

EDIT:

Может быть, я не объяснил мне хорошо. Мои отношения установлены правильно. Я не пытаюсь получить какой-либо объект; вместо этого я пытаюсь установить объект. Проблема в том, что метод A::setB() ожидает Doctrine_Collection в качестве параметра, а не сам объект. Я не знаю, как построить это Doctrine_Collection, и вот что я спрашиваю здесь ... Мне просто нужно добавить $b к Doctrine_Collection связанных объектов $a.

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Если вам нужно просто построить Doctrine_Collection, вы можете сделать это следующим образом:

// here, 'B' is the type of objects in the collection
$collection = new Doctrine_Collection("B");
$collection->add($b);

$a->setB($collection);

Вы также можете сделать:

$a->b[] = $b;

и, насколько язнаете, Doctrine добавит отношения, если они еще не существуют, и проигнорирует их, если они существуют.

1 голос
/ 23 декабря 2011

Я чувствую, что это должно быть возможно, подобно тому, что вы описываете, но мне никогда не приходилось.Во-первых, позвольте мне сказать, как я понимаю ваш вопрос: у вас есть отношения один ко многим между двумя моделями.Чтобы это было легче читать, я назову одну сторону Категории и множество сообщений.Вы хотите иметь возможность назначать коллекцию учений для категории с помощью вызова функции, например, $ category-> add ($ posts).

Большинство людей в конечном итоге делают это со многих сторон, а не содна сторона.То есть мы привыкли использовать $ post-> setCategory ($ category).

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

...