Laravel 5

Pagination : quelque chose m'échappe ...

  • Avatar de AMENDES
    Membre depuis :
    13/06/2017
    Messages :
    32

    Salut !!

    J'ai besoin de vos éclairssissement car j'ai 2 formulations d'une pagination et l'une marche alors que l'autre non sans que je comprenne pourquoi (App\Unit est un modèle) :

    if(!is_null($filter)){
    if($filter=='onlyforuse') $units = Unit::whereNotNull('only_for')->paginate(50);
    else $units = Unit::whereNull('only_for')->paginate(50);
    }
    else $units = Unit::paginate(50);
    $links = $units->links();

    marche très bien

    alors que

    if(!is_null($filter)){
    if($filter=='onlyforuse') $units = Unit::whereNotNull('only_for');
    else $units = Unit::whereNull('only_for');
    }
    else $units = new Unit();
    $units->paginate(50);
    $links = $units->links();

    avec l'erreur Call to undefined method Illuminate\Database\Query\Builder::links()

    Pourquoi dans le premier cas je me retrouve avec l'Object LengthAwarePaginator après le paginate(50) alors que dans le second je me retrouve avec un Object Builder ?

    Merci beaucoup pour vos éclairages !!
    Auré.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1644

    Bonjour,

    Lorsque tu fais :

    $units->paginate(50);

    Tu ne modifies pas la variable $units. Tu fais une action non mémorisée, donc inutile.
    Il est donc logique ensuite que ce code :

    $links = $units->links();

    renvoie une erreur parce que c'est encore un objet Builder.

Vous ne pouvez pas répondre à ce sujet.