Php Symfony2-条令:setMaxResults()不';行不通
我的存储库中的条令和自定义查询有一个问题。我在一个网站上工作,包括高级帐户。 使用这些帐户,您可以获得不受限制的列表成员结果,例如。如果您没有premium帐户,结果列表将限制为10个结果 这是我的自定义查询:Php Symfony2-条令:setMaxResults()不';行不通,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我的存储库中的条令和自定义查询有一个问题。我在一个网站上工作,包括高级帐户。 使用这些帐户,您可以获得不受限制的列表成员结果,例如。如果您没有premium帐户,结果列表将限制为10个结果 这是我的自定义查询: /** * Avec cette fonction on obtient la liste de tous les membres * en utilisant une pagination * @param int $page * @param $limitResultPrem
/**
* Avec cette fonction on obtient la liste de tous les membres
* en utilisant une pagination
* @param int $page
* @param $limitResultPremium
* @return Paginator
*/
public function getAllUser($page = 1,$maxResultPerPage = 6,$limitResultPremium = 10) {
$query = $this->createQueryBuilder('u')
->select('u')
->where('u.enabled = true')
->andWhere('u.dCreated <= '. "'".date("Y-m-d H:i:s", time())."'")
->orderBy('u.dCreated')
->setMaxResults($limitResultPremium)
;
$query->setFirstResult(($page-1) * $maxResultPerPage)
->setMaxResults($maxResultPerPage);
return new Paginator($query);
}
/**
*在我们记忆中的迟钝的记忆中
*使用者未分页
*@param int$page
*@param$limitResultPremium
*@返回分页器
*/
公共函数getAllUser($page=1,$maxResultPerPage=6,$limitResultPremium=10){
$query=$this->createQueryBuilder('u')
->选择('u')
->其中('u.enabled=true')
->和where('u.dCreated使用->setMaxResults
方法两次。
我建议你这样做:
public function getAllUser($page = 1,$maxResultPerPage,$limitResultPremium) {
$query = $this->createQueryBuilder('u')
->select('u')
->where('u.enabled = true')
->andWhere('u.dCreated <= '. "'".date("Y-m-d H:i:s", time())."'")
->orderBy('u.dCreated');
if ($limitResultPremium) {
$maxResultPerPage = 10;
}
$query->setFirstResult(($page-1) * $maxResultPerPage)
->setMaxResults($maxResultPerPage);
return new Paginator($query);
}
公共函数getAllUser($page=1,$maxResultPerPage,$limitResultPremium){
$query=$this->createQueryBuilder('u')
->选择('u')
->其中('u.enabled=true')
->和where('u.dCreated我猜您在尝试使用$limitResultPremium
将分页添加到已在工作的代码时得到了此代码。多次调用setMaxResults
只会导致最后一次调用生效。您可能想要的是这样的:
public function getAllUser($page = 1,$maxResultPerPage,$limitResultPremium) {
$query = $this->createQueryBuilder('u')
->select('u')
->where('u.enabled = true')
->andWhere('u.dCreated <= '. "'".date("Y-m-d H:i:s", time())."'")
->orderBy('u.dCreated');
if ($limitResultPremium) {
$maxResultPerPage = 10;
}
$query->setFirstResult(($page-1) * $maxResultPerPage)
->setMaxResults($maxResultPerPage);
return new Paginator($query);
}
公共函数getAllUser($page,$maxResultPerPage,$limitResultPremium){
$query=$this->createQueryBuilder('u')
->选择('u')
->其中('u.enabled=true')
->其中('u.dCreated如果使用的最大结果为10,则不需要limitResultPremium,而且参数中不得定义pge编号
public function getAllUser($page,$maxResultPerPage = 10) {
$query = $this->createQueryBuilder('u')
->select('u')
->where('u.enabled = true')
->andWhere('u.dCreated <= '. "'".date("Y-m-d H:i:s", time())."'")
->orderBy('u.dCreated');
$query->setFirstResult(($page-1) * $maxResultPerPage)
->setMaxResults($maxResultPerPage);
return new Paginator($query, true);
公共函数getAllUser($page,$MaxResultPage=10){
$query=$this->createQueryBuilder('u')
->选择('u')
->其中('u.enabled=true')
->在哪里('u.D创建了$limitResultPremium
应该做什么?$limitResultPremium应该通过限制值,如果帐户不是高级帐户,或者如果它是高级帐户,那么如果当前用户有高级帐户,您只想显示10行,否则您允许分页并列出所有用户,对吗?没有办法如果用户在此函数中是否有premium帐户,请挂断。是的,您是对的。我在调用此函数之前进行了此验证,并在$limitPremium变量中输入了一个值。谢谢您的回答!我已经尝试了您的解决方案,但我发现了一个错误:试图调用类的名为“limit”的未定义方法“Doctrine\ORM\QueryBuilder”。更新了我的评论。sry必须查看如何使用doctrine2再次设置限制。这不是问题,不用担心:)$MaxResultPage并没有限制结果,它只是对每页的数量或结果进行了限制,而这个参数并不依赖于帐户溢价,也不依赖于它应该以这种方式进行限制……我认为我的问题是paginator已经对每页进行了限制。当我单击第二页时,它将显示我的下一个用户,但只有在第一个结果和最大结果之间。所以我想,我必须找到另一个解决这个极限的方法。。。