繁体   English   中英

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

[英]How to associate objects of one-to-many relationships?

我正在将Symfony 1.4与Doctrine ORM一起使用。 我有两个通过一对多关系关联的类,并且我的对象是“ 一侧 ”。 我需要将此对象(例如A)与“ 多面 ”对象(例如B)相关联。问题是A没有一种方法只能向其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 ,而这正是我要问在这里......我只需要添加$bDoctrine_Collection的相关对象的$a

如果只需要构建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将添加该关系(如果尚不存在),而将其忽略。

我觉得这应该以类似于您所描述的方式来实现,但我从未必须如此。 首先,让我简单说明一下我的问题:2个模型之间存在一对多的关系。 为了便于阅读,我将一侧称为类别,将其称为多个帖子。 您希望能够通过函数调用将帖子的学说集合分配给类别,例如$ category-> add($ posts)。

大多数人最终从多方面而不是从一侧进行此操作。 也就是说,我们习惯于使用$ post-> setCategory($ category)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM