我正在使用 symfony + Doctrine,但遇到了一个问题:
我克隆了一个现有对象,我想更改克隆上的 FK。它应该是这样的:
$dafCloned = clone $daf;
$dafState = $dafStateRepository->findOneBy(
array(
'name' => 'saved',
'dafType' => 'invoice',
'company' => $daf->getSeller(),
));
$dafCloned->setDafState($dafState);
var_dump($dafState->getId());
var_dump($dafCloned->getDafState()->getId());
$this->em->persist($dafCloned);
$this->em->flush();
您可能已经注意到,我在这里得到了 2 个 var_dump。这是调用此代码的自定义命令的打印:
int(5500)
int(5499)
5500 是我应该在 db 中为 $dafCloned 拥有的 id,5499 是我为 $daf 拥有的 id。
我想知道为什么我的 id 不同...我的 dafState 应该是一样的。我可能错过了一些非常愚蠢的东西,但我从早上 9 点开始就一直坚持下去......我什至试图删除我们拥有的所有缓存,移动flush()
但persist()
无能为力:s
编辑:如果需要,添加 setDafState() 方法,但这是基本的:
public function setDafState(DafState $dafState) {
$this->dafState = $dafState;
return $this;
}
EDIT2:这里 getDafState() :
/**
* Get dafState
*
* @return MyPath\Entity\DafState
*/
public function getDafState() {
return $this->dafState;
}
如果您需要更多代码示例,请索取,我会编辑;)
对于对象,两者都是巨大的(教义对象),我找不到任何方法来获得有用的东西:s。我无法在 $daf 对象上 grep dafState,输出仍然很大。
编辑 3:
if ($daf->getId() == 8902) // daf test which should be duplicated
var_dump($dafCloned->getDafState() === $dafState);
输出
bool(true)