如何关联一对多关系的对象?

时间:2011-12-23 15:28:43

标签: php doctrine symfony-1.4 doctrine-collection

我正在使用带有Doctrine ORM的symfony 1.4。 我有两个由一对多关系相关的类,我有“ one side ”的对象。我需要将这个对象(比如A)与“多边”对象关联起来,假设是B.事情是A没有一个方法只向其Doctrine_Collection属性添加一个对象,而是它有一个接收Doctrine_Collection的setter。我怎样才能实现这种关联?

我有类似的东西:

$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.

请,任何帮助将非常感谢!!!谢谢!

修改

也许我没有很好地解释我。我的关系设置得当。我不是想要找回任何物体;相反,我正在尝试设置对象。问题是方法A::setB()需要Doctrine_Collection作为参数,而不是对象本身。我不知道如何构建Doctrine_Collection,这就是我在这里要求的......我只需要将$b添加到Doctrine_Collection的相关对象$a 1}}。

2 个答案:

答案 0 :(得分:2)

如果您只需要构建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 :(得分:1)

我觉得这应该是可能的,类似于你所描述的,但我从来没有。 首先,让我说明我如何理解你的问题:你有两个模型之间的一对多关系。为了使这更容易阅读,我将调用单侧类别和许多帖子。您希望能够通过函数调用将类别的帖子的学说集合分配给类别,例如$ category-> add($ posts)。

大多数人最终从多方面做到这一点,而不是一方。也就是说,我们习惯使用$ post-> setCategory($ category)。

就个人而言,我只会查看帖子并为每个帖子分配类别。如果您发现需要在几个地方执行此操作,则应该在类别类中创建自定义函数来处理此问题。