我有两个实体,View
并且Location
每个都View
可以有一个Location
。
在我看来,我因此有:
class View
{
//..... Other Stuff.....
/**
* @ManyToOne(targetEntity="Location", inversedBy="views")
**/
private $location;
//...setters and getters....
public function setLocation($location){
$this->location = $location;
}
}
然后是我的位置
class Location
{
//.....other stuff.....
/**
* @OneToMany(targetEntity="View", mappedBy="location")
**/
private $views;
public function __construct() {
$this->created = $this->updated = new \DateTime("now");
$this->views = new \Doctrine\Common\Collections\ArrayCollection();
}
// .... Getters and Setters ....
}
但是当我尝试这样做时:
<?php
$this->pageview = $this->em->getRepository('Entities\View')->find(1);
$this->location = $this->em->getRepository('Entities\Location')->find(1);
$this->pageview->setLocation($this->location);
$this->em->persist($this->pageview);
$this->em->flush();
?>
甚至当我创建新实体时:
<?php
$pv = new Entities\Pageview;
$lc = new Entities\Location;
$this->em->persist($lc);
$this->em->flush();
$pv->setLocation($lc);
$this->em->persist($pv);
$this->em->flush();
?>
Doctrine从不设置数据库中的 location_id(它始终为 NULL)。
我检查了 SQL 查询,甚至没有尝试设置它们,我得到的是:
INSERT INTO View (field1, field2, created, updated) VALUES ('val1', 'val2', '2013-07-17T12:10:56+01:00', '2013-07-17T12:10:56+01:00')
没有任何位置参考...奇怪的是我可以很好地更新 field1 和 field2...所有其他关系在我的整个应用程序中都有效...我只是无法获得视图和位置工作...
编辑
我现在有一些确切的代码在另一台计算机上工作。我不知道为什么它不起作用,但我只是将文件移回并重新启动计算机,现在它是......缓存问题我猜?