Beredte Sammlung


Einführung

Verfügbare Methoden
  • Anpassung Sammlung
Einleitung

Eloquent Alle zurückgegebenen Mehrfachergebnismengen sind Instanzen von -Objekten, einschließlich der Ergebnisse, die über die

-Methode abgerufen oder durch den Zugriff auf Beziehungen erhalten wurden. Das Sammlungsobjekt von Eloquent erbt die Basisklasse der Sammlung von Laravel, sodass es natürlich auch Dutzende von Methoden erbt, die das zugrunde liegende Array von Eloquent-Modellen elegant verarbeiten können.
Außerdem können alle Sammlungen als Iteratoren verwendet werden, und Sie können sie wie ein einfaches PHP-Array durchlaufen:

$users = App\User::where('active', 1)->get();
foreach ($users as $user) { 
   echo $user->name;
 }

Jedoch sind Sammlungen leistungsfähiger als Arrays und intuitiver Die Schnittstelle stellt Map/Reduce und andere Operationen bereit, die in einer Kette aufgerufen werden können. Entfernen wir beispielsweise alle inaktiven Benutzer und sammeln wir die Namen der verbleibenden Benutzer:

$users = App\User::all();
$names = $users->reject(function ($user) { 
   return $user->active === false;
 })->map(function ($user) { 
   return $user->name;
 });
IlluminateDatabaseEloquentCollectionget{note} Die meisten Eloquent-Erfassungsmethoden geben neue Eloquent-Erfassungsinstanzen zurück, aber

, < Außer 🎜 >,

,

,

und

Methoden, die eine Sammlungsbasisklasse zurückgeben Beispiel. Wenn die von der
-Operation zurückgegebene Sammlung keine Eloquent-Modelle enthält, wird sie ebenfalls automatisch in eine Sammlungsbasisklasse konvertiert.

pluckkeyszipcollapseflattenflipmap

Verfügbare Methoden

Sammlungsbasisklasse

All Eloquent erbt die Basis-Laravel-Sammlung Objekte; daher erben sie auch die leistungsstarken Methoden, die von allen Sammlungsbasisklassen bereitgestellt werden:

Benutzerdefinierte Sammlung

Wenn Sie eine benutzerdefinierte Sammlung in Ihrer eigenen Erweiterungsmethode verwenden müssen Collection-Objekt können Sie die newCollection-Methode in Ihrem Modell überschreiben:

<?php
    namespace App;
    use App\CustomCollection;
    use Illuminate\Database\Eloquent\Model;
    class User extends Model{   
     /**
     * 创建一个新的 Eloquent 集合实例对象。
     *
     * @param  array  $models
     * @return \Illuminate\Database\Eloquent\Collection
     */    
     public function newCollection(array $models = [])  
       {   
            return new CustomCollection($models);    
        }
    }

Sobald Sie die newCollection-Methode definiert haben, können Sie dies jederzeit in der Collection-Instanz des von Eloquent Get zurückgegebenen Modells tun Ihre benutzerdefinierte Sammlungsinstanz. Wenn Sie in jedem Modell Ihrer Anwendung eine benutzerdefinierte Sammlung verwenden möchten, sollten Sie die Methode newCollection in der Modellbasisklasse überschreiben, von der alle Modelle erben.

Dieser Artikel wurde zuerst auf der Website LearnKu.com veröffentlicht.