私には2つのエンティティが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をうまく更新できます...そして、他のすべての関係はアプリケーション全体で機能しています...ビューと場所を機能させることができません...
編集
現在、別のコンピューターで正確にいくつかのコードが動作しています。なぜ機能しなかったのかはわかりませんが、ファイルを元に戻し、コンピューターを再起動したところ、キャッシュの問題が発生したと思いますか?