====== 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**
forPage($page, $perPage)->values(),
$this->count(),
$perPage,
$page,
$options
);
$lap->setPath(url()->current());
return $lap;
});
}
Ensuite, utiliser comme le paginate() de eloquent
$data = collect($myArray);
$data = $data->paginate(10);
===== sort sur plusieurs champs =====
Si c'était une requête sql
SELECT * FROM `liste_programmes` ORDER BY `date_version` DESC, `order`, `nom`
$filtre_programme=collect($filtre_programme)->sortBy( function($p){
return [
- strtotime($p->date_version),
$p->order,
$p->nom,
];
})->values();
Trier comme on veut
$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;
}
});