我想加入两个表(games
和ownership
)。从那里开始,我想打印用户在所有权中分配给他的那些游戏。例如:user(id:2)有两个游戏(id:1和id:2)。我想只打印这两个。
我的控制器如下:
function getGameAction($id) {
$game = $this->getDoctrine()
->getRepository('GameShelfGamesBundle:Game')
->find($id);
return new Response($game->getOwnership()->getName());
}
目前,我只收到错误:
致命错误:调用未定义的方法Proxies__CG __ \ GameShelf \ UsersBundle \ Entity \ Ownership :: getName()在D:!! XAMPP \ htdocs \ Symfony \ src \ GameShelf \ GamesBundle \ Controller \ DefaultController.php第50行< / p>
答案 0 :(得分:0)
查看错误消息 - 您没有任何getOwnership方法,甚至没有与所有权表的关系。
首先,您需要在游戏实体中声明与所有权的关系:
/*
* @ORM\ManyToOne(targetEntity="Namespace\To\Ownership", inversedBy="games")
* @ORM\JoinColumn(name="ownership_id", referencedColumnName="id")
*/
private $ownership;
在您的所有权实体中:
/**
* @ORM\OneToMany(targetEntity="Namespace\To\Game", mappedBy="ownership")
*/
private $games;
然后运行console命令生成setter和getter,一切都会顺利。
答案 1 :(得分:0)
您只是忘记在所有权实体中添加名为“name”的变量。因此,您没有自动生成任何getter和setter。 尝试将所有变量放在代码的开头@Cyprian监督你的关系。
如果您只是查看错误消息,您应该立即看到错误的来源。