我正在使用带有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}}。
答案 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)。
就个人而言,我只会查看帖子并为每个帖子分配类别。如果您发现需要在几个地方执行此操作,则应该在类别类中创建自定义函数来处理此问题。