Php Symfony2-条令:setMaxResults()不';行不通

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

我的存储库中的条令和自定义查询有一个问题。我在一个网站上工作,包括高级帐户。 使用这些帐户,您可以获得不受限制的列表成员结果,例如。如果您没有premium帐户,结果列表将限制为10个结果

这是我的自定义查询:

/**
 * 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已经对每页进行了限制。当我单击第二页时,它将显示我的下一个用户,但只有在第一个结果和最大结果之间。所以我想,我必须找到另一个解决这个极限的方法。。。