Symfony2 - 映射两个表

时间:2013-01-02 15:22:26

标签: php symfony doctrine

我想加入两个表(gamesownership)。从那里开始,我想打印用户在所有权中分配给他的那些游戏。例如:user(id:2)有两个游戏(id:1和id:2)。我想只打印这两个。

我的控制器如下:

function getGameAction($id) {
    $game = $this->getDoctrine()
      ->getRepository('GameShelfGamesBundle:Game')
      ->find($id);

    return new Response($game->getOwnership()->getName());
}

实体:OwnershipGame

目前,我只收到错误:

  

致命错误:调用未定义的方法Proxies__CG __ \ GameShelf \ UsersBundle \ Entity \ Ownership :: getName()在D:!! XAMPP \ htdocs \ Symfony \ src \ GameShelf \ GamesBundle \ Controller \ DefaultController.php第50行< / p>

2 个答案:

答案 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监督你的关系。

如果您只是查看错误消息,您应该立即看到错误的来源。