我有两个表,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();
但它不起作用。 Symfony说它必须是Game
实例,而不是字符串。怎么解决这个问题?
当我尝试这个时:
$gameown -> setGame($game->getId('3'));
插入正常,但是......空值。
答案 0 :(得分:2)
或
你也可以这样做
$gameObject = $em->getRepository('YourBundle:Game')->findOneBy(array('id' => 3));
然后你可以使用
$gameown->setGame($gameObject);
答案 1 :(得分:1)
实际上,你必须使用游戏对象,而且教条将为你完成工作。 用对象思考,而不是用表。
首先,您必须检索对象(例如,从数据库中):
$em = $this->getDoctrine()->getEntityManager();
$game = $em->getRepository('AppMonBundle:Game')->find(3);
然后,您可以设置关系:
$gameown->setGame($game);