Outils pour utilisateurs

Outils du site


devweb:laravel:collection (lu 6817 fois)

Ceci est une ancienne révision du document !


Table des matières

Collection

where

Attention le where de Collection est différent du where de Eloquent. Il est strict avec un === !

Pour contourner le problème

Si votre ‘id’ est transformé en string par eloquent par exemple, un where(‘id’,1) ne fonctionnera pas. Pour assurer la compatibilité entre plusieurs serveurs :

$collect->where('id', 1, false)

ou

$collect->whereLoose('id', 1)

pagination

Rendre une collection paginable

Ajouter ce code dans app/Providers/AppServiceProvider.php

<?php
 
namespace App\Providers;
 
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Collection;
use Illuminate\Support\ServiceProvider;
 
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
 
        Collection::macro('paginate', function(int $perPage = 15, $page = null, $options = []) {
        /** @var Collection $this */
            $page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
            return new LengthAwarePaginator(
                $this->forPage($page, $perPage)->values(),
                $this->count(),
                $perPage,
                $page,
                $options
            );
        });
    }

Ensuite, utiliser comme le paginate() de eloquent

$data = collect($myArray);
$data = $data->paginate(10);
devweb/laravel/collection.1576055612.txt.gz · Dernière modification: 11-12-2019 10:13 de edmc73