Php Doctrine2一对一正确完成
我有一个实体,比如说A和另一个B A={id,name}B={id,details} 我想要一对一的关系。基本上,对于A的每个x,必须正好有一个y来自B,反之亦然。因此,我考虑了解决方案,并提出了以下建议 1.该id是共享的。 但基本上是这样的。Php Doctrine2一对一正确完成,php,mysql,doctrine-orm,Php,Mysql,Doctrine Orm,我有一个实体,比如说A和另一个B A={id,name}B={id,details} 我想要一对一的关系。基本上,对于A的每个x,必须正好有一个y来自B,反之亦然。因此,我考虑了解决方案,并提出了以下建议 1.该id是共享的。 但基本上是这样的。 A={same\u id,name}B={same\u id,details}same\u id是唯一的 B将有一个外键,用于a的相同\u id 或者A将有一个外键用于相同的\u id到B。相同的\u id 但我想从A那里得到细节。 基本上做$a-
A={same\u id,name}B={same\u id,details}same\u id是唯一的
- B将有一个外键,用于a的相同\u id
- 或者A将有一个外键用于相同的\u id到B。相同的\u id
A={id,name,bId}B={bId,details}bId是唯一的,id是唯一的
但这样看来,我似乎是在浪费一篇专栏文章。
B不会知道它也附在A上,这可能是一种不好的做法
编辑:但这并不能解决任何问题,只是注意到我必须再次创建B,因为A中的任何x都需要指向B中的有效y。
3.是否存在自动生成映射的问题?
目前,我正在从MySQL数据库生成XML映射和实体类
可能是这一代人不会自动告诉A B是否有外键吗?就是您要寻找的(类似于第2点中的示例)。是的,拥有是很重要的。还请阅读有关的概念。
我想在你的例子中说,
A
是拥有方——它有一个名字。名字通常比细节更重要
同时创建两个实体没有问题
$a = new A();
$a->setName("Alpha");
$b = new B();
$b->setDetails("Alpha goes first");
$a->setB($b);
$em->persist($a)->flush();
两个实体都会知道对方:
$a->getB();
$b->getA();
再说一次-必须有一个拥有方,你必须保持逻辑。谢谢,我已经阅读了所有关于它的内容,现在它工作了。但不幸的是,我遇到了另一个问题——反面总是自动加载,这很糟糕。。。我有什么补救办法吗?或者我应该不告诉对方这个关系吗?我认为它与,和