0

我有两张桌子,gameown。在own的实体中,我创建了OneToMany关系:

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

并且在gameEntity 字段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();

但它不起作用。Symfony 说它必须是一个Game实例,而不是一个字符串。如何解决这个问题?

当我尝试这个时:

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

它插入没问题,但是......空值。

4

2 回答 2

2

或者

你也可以这样做

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

然后你可以使用

$gameown->setGame($gameObject);

于 2013-01-22T01:24:23.910 回答
1

实际上,您必须使用游戏对象,而学说会为您完成工作。用对象思考,而不是用表格思考。

首先,您必须检索您的对象(例如从数据库中):

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

然后,您可以设置关系:

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