无法从返回的存储库查询中调用实体函数

时间:2011-11-30 06:37:28

标签: php doctrine symfony

我正在尝试使用我的一个实体类和一个存储库类从symfony2和doctrine中的数据库中获取一个对象。

这是函数调用:

$game = $em->getRepository('MLBPBeerBundle:TableGame')->findBygameId($gid);
$game.setZoneTableid('20');

以下是我的存储库类的片段:

class TableGameRepository extends EntityRepository
{
public function findBygameId($gid)
{
    return $this->getEntityManager()
        ->createQuery('SELECT g FROM MLBPBeerBundle:TableGame g WHERE g.gameId = ' . $gid)
        ->getSingleResult();
}

这是我的实体类的片段:

/**
 * MLBP\BeerBundle\Entity\TableGame
 *
 * @ORM\Table(name="table_game")
 * @ORM\Entity(repositoryClass="MLBP\BeerBundle\Repository\TableGameRepository")
 * 
 */
class TableGame
{
    /**
     * @var TableTable
     *
     * @ORM\ManyToOne(targetEntity="TableTable")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="ZONE_TABLEID", referencedColumnName="TABLE_ID")
     * })
     */
        protected $zoneTableid;

    /**
     * Set zoneTableid
     *
     * @param MLBP\BeerBundle\Entity\TableTable $zoneTableid
     */
    public function setZoneTableid(\MLBP\BeerBundle\Entity\TableTable $zoneTableid)
    {
        $this->zoneTableid = $zoneTableid;
    }

这是我的错误消息:

调用未定义的函数MLBP \ BeerBundle \ Controller \ setZoneTableid() 谢谢!

1 个答案:

答案 0 :(得分:1)

请务必使用 - >运算符而不是。运营商。此外,对于此特定示例,您不能将'20'设置为zoneId,因为它不是表示TableTable的实体。

$game->setZoneTableid(<Some Table Entity>);