0

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

我的控制器如下:

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

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

实体:所有权博弈

现在,我只收到一个错误:

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

4

2 回答 2

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;

然后运行控制台命令生成 setter 和 getter,一切都会正常。

于 2013-01-02T15:37:51.697 回答
0

您只是忘记在您的所有权实体中添加一个名为“名称”的变量。因此,您不会自动生成任何 getter 和 setter。尝试将所有变量放在代码的开头@Cyprian 因此监督了您的关系。

如果您只查看错误消息,您应该会立即看到错误来自何处。

于 2013-01-02T19:39:10.107 回答