KnpPaginatorBundle 2.3设置参数不变换对象

时间:2013-03-19 16:30:22

标签: symfony

我尝试使用最后版本af knp_paginator和symfony 2.2.1

我的查询是:

$qb = $em->getRepository('TemplateDefaultBundle:Member')->createQueryBuilder('m');

$query = $qb->select('m, p.id')
            ->join('m.photos', 'p' )
            ->where('m.status = 1')
            ->where('m.game = :game')
            ->andWhere('m.status = 1')
            ->setParameter('game', $this->game);

其中this->game是好对象。

有效:

$query->getQuery()->execute();

不起作用

$pagination->paginate( $query->getQuery(), $this->get('request')->query->get('page', 1), 6 );

并在我有的探查器中

WHERE m0_.game_id = 'Object(Template\\DefaultBundle\\Entity\\Game)' AND m0_.status = 1 

我的composer.json:

    "symfony/symfony": "2.2.*",...
    "knplabs/knp-paginator-bundle": "2.3",

2 个答案:

答案 0 :(得分:1)

在您的查询中,您传递的是对象game,而不是id 要获得您想要的结果,请将setParameter('game', $this->game)替换为setParameter('game', $this->game->getId())

所以你的查询变为:

$query = $qb->select('m, p.id')
        ->join('m.photos', 'p' )
        ->where('m.status = 1')
        ->where('m.game = :game')
        ->andWhere('m.status = 1')
        ->setParameter('game', $this->game->getId());

答案 1 :(得分:0)

为避免 - > getId()解决方法,目前可以使用下一个paginator包组合:

"knplabs/knp-components": "1.2.1",
"knplabs/knp-paginator-bundle": "~2.3"