Symfony KnpPaginatorBundle-致命错误:条令\ORM\Query\AsIsHydrator包含1个必须实现的抽象方法

Symfony KnpPaginatorBundle-致命错误:条令\ORM\Query\AsIsHydrator包含1个必须实现的抽象方法,symfony,bundle,knppaginator,Symfony,Bundle,Knppaginator,我正在尝试集成到我的Symfony项目中,该项目允许对实体列表进行分页 因此,我按照自述文件的说明像往常一样安装和设置包 但是,当我测试KnpPaginatorBundle示例的实现(复制过去的实现)时,我得到以下错误: 致命错误:类Knp\Component\Pager\Event\Subscriber\Paginate\Doctrine\ORM\Query\AsIsHydrator包含1个抽象方法,因此必须声明为抽象或实现其余方法(Doctrine\ORM\Internal\Hyderati

我正在尝试集成到我的Symfony项目中,该项目允许对实体列表进行分页

因此,我按照自述文件的说明像往常一样安装和设置包

但是,当我测试KnpPaginatorBundle示例的实现(复制过去的实现)时,我得到以下错误:

致命错误:类Knp\Component\Pager\Event\Subscriber\Paginate\Doctrine\ORM\Query\AsIsHydrator包含1个抽象方法,因此必须声明为抽象或实现其余方法(Doctrine\ORM\Internal\Hyderation\AbstractHyderator:\u HyderateAll)在第13行的D:\workspace\wedding\vendor\knp components\src\knp\Component\Pager\Event\Subscriber\Paginate\Doctrine\ORM\Query\AsIsHydrator.php中

我在谷歌上没有找到任何解决方案:-/

欢迎任何帮助。。。谢谢

我的控制器:

/**
 * @Route("/pagin", name="pagin")
 * @Template()
 */
public function paginAction(){
    $em    = $this->get('doctrine.orm.entity_manager');
    $dql   = "SELECT c FROM LgpWeddingBundle:Contact c";
    $query = $em->createQuery($dql);

    $paginator  = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
            $query,
            $this->get('request')->query->get('page', 1)/*page number*/,
            10/*limit per page*/
    );

    // parameters to template
    // return $this->render('LgpWeddingBundle:Contact:pagin.html.twig', array('pagination' => $pagination));
    return array('pagination' => $pagination);
}
class AsIsHydrator extends AbstractHydrator
{
    /**
     * Hydrates all rows from the current statement instance at once.
     */
    protected function hydrateAllData()
    {
        return $this->_stmt->fetchAll(\PDO::FETCH_ASSOC);
    }
}
abstract class AbstractHydrator
{
    //...

    /**
     * Hydrates all rows from the current statement instance at once.
     */
    abstract protected function _hydrateAll();

    //...
}
Knp\Component\Pager\Event\Subscriber\Paginate\Doctrine\ORM\Query\AsIsHydrator:

/**
 * @Route("/pagin", name="pagin")
 * @Template()
 */
public function paginAction(){
    $em    = $this->get('doctrine.orm.entity_manager');
    $dql   = "SELECT c FROM LgpWeddingBundle:Contact c";
    $query = $em->createQuery($dql);

    $paginator  = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
            $query,
            $this->get('request')->query->get('page', 1)/*page number*/,
            10/*limit per page*/
    );

    // parameters to template
    // return $this->render('LgpWeddingBundle:Contact:pagin.html.twig', array('pagination' => $pagination));
    return array('pagination' => $pagination);
}
class AsIsHydrator extends AbstractHydrator
{
    /**
     * Hydrates all rows from the current statement instance at once.
     */
    protected function hydrateAllData()
    {
        return $this->_stmt->fetchAll(\PDO::FETCH_ASSOC);
    }
}
abstract class AbstractHydrator
{
    //...

    /**
     * Hydrates all rows from the current statement instance at once.
     */
    abstract protected function _hydrateAll();

    //...
}
条令\ORM\Internal\Hydration\AbstractHydrator:

/**
 * @Route("/pagin", name="pagin")
 * @Template()
 */
public function paginAction(){
    $em    = $this->get('doctrine.orm.entity_manager');
    $dql   = "SELECT c FROM LgpWeddingBundle:Contact c";
    $query = $em->createQuery($dql);

    $paginator  = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
            $query,
            $this->get('request')->query->get('page', 1)/*page number*/,
            10/*limit per page*/
    );

    // parameters to template
    // return $this->render('LgpWeddingBundle:Contact:pagin.html.twig', array('pagination' => $pagination));
    return array('pagination' => $pagination);
}
class AsIsHydrator extends AbstractHydrator
{
    /**
     * Hydrates all rows from the current statement instance at once.
     */
    protected function hydrateAllData()
    {
        return $this->_stmt->fetchAll(\PDO::FETCH_ASSOC);
    }
}
abstract class AbstractHydrator
{
    //...

    /**
     * Hydrates all rows from the current statement instance at once.
     */
    abstract protected function _hydrateAll();

    //...
}

看起来您使用的是旧版本的Doctrin/ORM。在最新版本中,它应该可以工作。这可能是KNPPaginatorBundle的composer.json的一个问题,但是如果您想要一个快速修复,只需更新

出于好奇,您是否使用Composer安装了KNPPaginator?如果有,请提供您的版本

编辑:
我刚刚检查了bundle,但它们并不依赖于条令/ORM,所以唯一的解决方案是手动更新它。

Hi m0c,我使用了老式的方式:更新我的
deps
文件并执行
php bin/vendors install
;-)我没有为
KnpPaginatorBundle
及其依赖性
knp组件指定版本,我使用的原则版本是2.1.5。-所以根据你的建议,我只需要更新我的条令版本(我想是2.2.x)?我希望不会有更新冲突。。。感谢原则升级同时涉及太多的影响/修改。。。解决每个依赖项冲突需要太多时间。我将在新的Symfony 2.3版本上创建POC…-等等看;-)也许你应该利用这一时刻转到composer进行依赖关系管理,因为你已经转到了S2.3。是的,这也是我的计划;-)