0

2つのテーブルがgameありownます。ownのエンティティで、関係を作成しましたOneToMany

 /** @ORM\ManyToOne(targetEntity="Game") */ 
 private $game;

また、gameエンティティフィールドidにもマップされます。

* @ORM\OneToMany(targetEntity="Own", mappedBy="game")

データベースに新しいデータを挿入する際に問題が発生しました。私は単にオブジェクトを永続化しようとしました:

$gameown = new Own();
$gameown -> setGame('3');
$gameown -> setUpdated(date("Y-m-d H:i:s"));

$em = $this->getDoctrine()->getEntityManager();
$em->persist($gameown);
$em->flush();

しかし、それは機能しません。Gamesymfonyはそれが文字列ではなくインスタンスでなければならないと言っています。これを解決する方法は?

私がこれを試すとき:

$gameown -> setGame($game->getId('3'));

挿入は大丈夫ですが...null値。

4

2 に答える 2

2

または

この方法でもできます

$gameObject = $em->getRepository('YourBundle:Game')->findOneBy(array('id' => 3));

次に、使用できます

$gameown->setGame($gameObject);

于 2013-01-22T01:24:23.910 に答える
1

実際には、ゲームオブジェクトを使用する必要があり、Doctrineがあなたに代わって作業を行います。テーブルではなく、オブジェクトで考えてください。

まず、オブジェクトを(たとえば、データベースから)取得する必要があります。

$em = $this->getDoctrine()->getEntityManager();
$game = $em->getRepository('AppMonBundle:Game')->find(3);

次に、関係を設定できます。

$gameown->setGame($game);
于 2013-01-21T23:17:15.380 に答える