cakephp 3分页器不工作

cakephp 3分页器不工作,cakephp,pagination,cakephp-3.0,query-builder,Cakephp,Pagination,Cakephp 3.0,Query Builder,我现在将这个查询与CakePHP3一起用于一个小型搜索引擎 $query_tweet = $this->Tweet ->find() ->select([ 'Users.username', 'Users.avatarprofil', 'Tweet.contenu_tweet', 'Tweet.created', 'Tweet.nb_commentaire', 'Tw

我现在将这个查询与CakePHP3一起用于一个小型搜索引擎

$query_tweet = $this->Tweet
    ->find()
    ->select([
        'Users.username',
        'Users.avatarprofil',
        'Tweet.contenu_tweet',
        'Tweet.created',
        'Tweet.nb_commentaire',
        'Tweet.nb_partage',
        'Tweet.nb_like',
    ])
    ->where([
        "MATCH(Tweet.contenu_tweet) AGAINST(:search)" 
    ])
    ->where(['private' => 0]) // on ne cherche que les tweets publics
    ->bind(':search', '$search')
    ->order(['Tweet.created' => 'DESC'])
    ->contain(['Users']);
这个查询非常有效,但我想像这样使用paginator

$this->set('resultat_tweet', $this->Paginator->paginate($query_tweet, ['limit' => 8]));
我明白了

错误:SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配

如果使用SQL关键字作为表列名,则可以在config/app.php中为数据库连接启用标识符引用

SQL查询:

选择 Users.username作为“Users\uu username”, Users.avatarprofile作为“Users\uu avatarprofile”, Tweet.contenu\u Tweet作为“Tweet\uu contenu\u Tweet”, Tweet.created为“Tweet\uuu created”, Tweet.nb\u commentaire作为“Tweet\unb\u commentaire”, Tweet.nb\u partage为'Tweet\u nb\u partage`, Tweet.nb_like作为'Tweet__nb_like' 从…起 推特 左连接 users.username=Tweet.user\u id上的用户 哪里 MATCHTweet.contenu_推文反对:搜索 和private=:c0 订购人 Tweet.created DESC 限度 8偏移量0 我在PHPmyadmin中尝试了这个查询,它是有效的,我有很多测试来看看我是否得到了搜索,我有它


我真的不知道问题出在哪里,我正在其他页面上使用Paginator,它可以工作

最后,我通过创建一条新路线得到我想要的,我不再使用stru\n替换

最终代码

              <?= $this->Paginator->options([
'url' => ['-'.$search.'']

]);

       echo $this->Paginator->next('Next page'); ?>

非常感谢所有帮助我的人,特别是马修·福斯卡里尼。最后,我通过创建一条新路线得到了我想要的,我不再使用stru

最终代码

              <?= $this->Paginator->options([
'url' => ['-'.$search.'']

]);

       echo $this->Paginator->next('Next page'); ?>

感谢所有帮助我的人,特别是Mathew Foscarini,我怀疑paginator正在克隆查询,在克隆过程中边界变量丢失了。这可能是一个应该在github问题中报告的错误,而不是在stackoverflow上报告的错误。您有此错误的堆栈跟踪吗?该查询由paginator运行两次。一个用于$query->all,另一个用于$cleanQuery->count。我想知道第二次计数呼叫是否失败。请参阅第118行附近的Paginator.php。我在Paginator.php$cleanQuery=clone$query的第186行看到;$results=$query->all;$numResults=计数$results;$count=$cleanQuery->count;我认为你是对的,边界变量是lost@christ57我刚刚在我自己的CakePHP3.5.2上测试了你的查询,它运行正常。错误消息是一个提示。这意味着查询上有一个额外的绑定。我怀疑该查询与您粘贴在问题中的查询不同。你能用dd$query->\uuu toString修改Paginator.php,看看SQL到底是什么吗?我怀疑Paginator正在克隆查询,在克隆过程中边界变量丢失了。这可能是一个应该在github问题中报告的错误,而不是在stackoverflow上报告的错误。您有此错误的堆栈跟踪吗?该查询由paginator运行两次。一个用于$query->all,另一个用于$cleanQuery->count。我想知道第二次计数呼叫是否失败。请参阅第118行附近的Paginator.php。我在Paginator.php$cleanQuery=clone$query的第186行看到;$results=$query->all;$numResults=计数$results;$count=$cleanQuery->count;我认为你是对的,边界变量是lost@christ57我刚刚在我自己的CakePHP3.5.2上测试了你的查询,它运行正常。错误消息是一个提示。这意味着查询上有一个额外的绑定。我怀疑该查询与您粘贴在问题中的查询不同。您可以使用dd$query->\uuu-toString修改Paginator.php,看看SQL到底是什么吗。