cakephp 3分页器不工作
我现在将这个查询与CakePHP3一起用于一个小型搜索引擎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
$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到底是什么吗。