Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何关联一对多关系的对象?_Php_Doctrine_Symfony 1.4_Doctrine Collection - Fatal编程技术网

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

Php 如何关联一对多关系的对象?,php,doctrine,symfony-1.4,doctrine-collection,Php,Doctrine,Symfony 1.4,Doctrine Collection,我正在使用symfony 1.4和ORM。 我有两个由一对多关系关联的类,我有“一边”的对象。我需要将这个对象(比如A)与“多方”对象(比如B)相关联。问题是A没有一个方法只将一个对象添加到其Doctrine_集合属性,而是它有一个接收Doctrine_集合的setter。我怎样才能实现这种联想 我有点像: $a = new A(); $b = new B(); // Obviously, $b is not new, this is just for reference $a->se

我正在使用symfony 1.4和ORM。 我有两个由一对多关系关联的类,我有“一边”的对象。我需要将这个对象(比如A)与“多方”对象(比如B)相关联。问题是A没有一个方法只将一个对象添加到其Doctrine_集合属性,而是它有一个接收Doctrine_集合的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()
需要一个
doctor\u集合
作为参数,而不是对象本身。我不知道如何建立那个
条令集
,这就是我在这里要问的。。。我只需要将
$b
添加到
$a

的相关对象的
原则集合
,我觉得这应该可以以类似于您描述的方式实现,但我从来没有这样做过。 首先,让我陈述一下我是如何理解你的问题的:两个模型之间存在一对多的关系。为了让这篇文章更容易阅读,我将把单面分类和多篇文章称为单面分类。您希望能够通过一个函数调用,如$category->add($posts),将一组帖子分配给该类别

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


就我个人而言,我只是浏览一下这些帖子,然后给每一个帖子分配一个类别。如果您发现需要在一些地方执行此操作,您可能应该在您的category类中创建一个自定义函数来处理此操作。

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

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


就我个人而言,我只是浏览一下这些帖子,然后给每一个帖子分配一个类别。如果您发现有必要在一些地方执行此操作,您可能应该在您的category类中创建一个自定义函数来处理此操作。

如果您只需要构建一个
Doctrine\u集合
,您可以按以下方式执行:

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

如果您只需要构建一个
Doctrine\u集合,您可以按如下方式执行:

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

$a->setB($collection);
您还可以执行以下操作:

$a->b[] = $b;

而且,据我所知,如果这种关系不存在,教条会增加它,如果它存在,教条会忽略它。

这正是我的问题!。我做了一些类似于你建议的事情,但我没有测试过,所以我不确定它是否有效。我的疑问是:当你将一个类别分配给一篇文章时,类别对象上的文章集合会同时更新?啊,很有趣。好吧,条令集合是您上次查询的结果集合,因此我怀疑它是否会随着对象的更改而更新。在将帖子分配到类别后,您需要运行查询。我想是的。。。无论如何谢谢你!看看里奇的答案……=)这正是我的问题!。我做了一些类似于你建议的事情,但我没有测试过,所以我不确定它是否有效。我的疑问是:当你将一个类别分配给一篇文章时,类别对象上的文章集合会同时更新?啊,很有趣。好吧,条令集合是您上次查询的结果集合,因此我怀疑它是否会随着对象的更改而更新。在将帖子分配到类别后,您需要运行查询。我想是的。。。无论如何谢谢你!看看里奇的答案……=)哇,那正是我想要的!只有一件事,什么是AFAIK?对不起,我不是以英语为母语的人,我不确定这是一个英语单词还是一个与技术原则相关的单词。。。非常感谢!=)呵呵:-)不,它只是指“据我所知”。我将进行编辑以使其更清晰;-)哇,那正是我想要的!只有一件事,什么是AFAIK?对不起,我不是以英语为母语的人,我不确定这是一个英语单词还是一个与技术原则相关的单词。。。非常感谢!=)呵呵:-)不,它只是指“据我所知”。我将进行编辑以使其更清晰;-)