Outils pour utilisateurs

Outils du site


devweb:laravel:collection (lu 6818 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
devweb:laravel:collection [08-04-2019 10:34]
edmc73 créée
devweb:laravel:collection [26-01-2023 18:05] (Version actuelle)
edmc73 [sort sur plusieurs champs]
Ligne 14: Ligne 14:
   $collect->whereLoose('id', 1)   $collect->whereLoose('id', 1)
  
 +
 +===== pagination =====
 +Rendre une collection paginable
 +
 +Ajouter ce code dans **app/Providers/AppServiceProvider.php**
 +
 +<code 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);
 +            $lap = new LengthAwarePaginator(
 +                $this->forPage($page, $perPage)->values(),
 +                $this->count(),
 +                $perPage,
 +                $page,
 +                $options
 +            );
 +            $lap->setPath(url()->current());
 +            return $lap;
 +        });
 +    }
 +
 +</code>
 +
 +Ensuite, utiliser comme le paginate() de eloquent
 +
 +<code php>
 +$data = collect($myArray);
 +$data = $data->paginate(10);
 +
 +</code>
 +
 +===== sort sur plusieurs champs =====
 +Si c'était une requête sql
 +
 +  SELECT * FROM `liste_programmes` ORDER BY `date_version` DESC, `order`, `nom` 
 +
 +<code php>
 +        $filtre_programme=collect($filtre_programme)->sortBy( function($p){
 +            return [
 +                - strtotime($p->date_version),
 +                $p->order,
 +                $p->nom,
 +            ];
 +        })->values();
 +</code>
 +
 +Trier comme on veut
 +<code php>
 +        $permissions = $permissions->sortBy(function($p){
 +                switch ($p->role) {
 +                    case "administrator":
 +                        return "A";
 +                    break;
 +                    case "assigner":
 +                        return "B";
 +                    break;
 +                    case "assignable":
 +                        return "C";
 +                    break;
 + 
 +                    default:
 +                        return "Z";
 +                    break;
 +                }
 +            });
 +</code>
devweb/laravel/collection.txt · Dernière modification: 26-01-2023 18:05 de edmc73