0

我正在使用带有 Doctrine ORM 的 symfony 1.4。我有两个通过一对多关系关联的类,并且我有“一侧”的对象。我需要将这个对象,比如说 A,关联到“多面”对象,比如说 B。事情是 A 没有一种方法可以只将一个对象添加到它的 Doctrine_Collection 属性,而是它有一个接收一个 setter 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.

拜托,任何帮助将不胜感激!!!谢谢!

编辑:

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

4

2 回答 2

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 将添加该关系,如果存在则忽略它。

于 2011-12-23T19:24:45.500 回答
1

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

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

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

于 2011-12-23T19:11:50.183 回答