„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Den Unterschied zwischen pluck() und select() in Laravel 11 verstehen

Den Unterschied zwischen pluck() und select() in Laravel 11 verstehen

Veröffentlicht am 08.11.2024
Durchsuche:889

Understanding the Difference Between pluck() and select() in Laravel 11

Laravel, eines der beliebtesten PHP-Frameworks, bietet eine Reihe leistungsstarker Methoden zur Datenmanipulation. Unter diesen werden pluck() und select() häufig beim Umgang mit Sammlungen verwendet. Obwohl sie ähnlich erscheinen mögen, dienen sie unterschiedlichen Zwecken. In diesem Artikel werden wir die Unterschiede zwischen diesen beiden Methoden untersuchen, erklären, wann sie jeweils verwendet werden sollten, und praktische Codierungsbeispiele bereitstellen, um ihre Verwendung in Laravel 11 zu demonstrieren.

Was ist zupfen()?

Die pluck()-Methode dient zum Extrahieren von Werten aus einem einzelnen Schlüssel in einer Sammlung. Dies ist besonders praktisch, wenn Sie ein bestimmtes Attribut aus einer Sammlung von Arrays oder Objekten abrufen möchten.

Beispiel für pluck()

Angenommen, Sie haben eine Produktsammlung und möchten nur die Produktnamen extrahieren:

$collection = collect([
    ['product_id' => 'prod-100', 'name' => 'Desk'],
    ['product_id' => 'prod-200', 'name' => 'Chair'],
]);

// Pluck only the names of the products
$plucked = $collection->pluck('name');

$plucked->all();
// Output: ['Desk', 'Chair']

Darüber hinaus können Sie pluck() verwenden, um der resultierenden Sammlung benutzerdefinierte Schlüssel zuzuweisen:

$plucked = $collection->pluck('name', 'product_id');

$plucked->all();
// Output: ['prod-100' => 'Desk', 'prod-200' => 'Chair']

Verschachtelte Werte mit pluck()

Die pluck()-Methode unterstützt auch das Extrahieren verschachtelter Werte mithilfe der Punktnotation:

$collection = collect([
    [
        'name' => 'Laracon',
        'speakers' => [
            'first_day' => ['Rosa', 'Judith'],
        ],
    ],
    [
        'name' => 'VueConf',
        'speakers' => [
            'first_day' => ['Abigail', 'Joey'],
        ],
    ],
]);

$plucked = $collection->pluck('speakers.first_day');

$plucked->all();
// Output: [['Rosa', 'Judith'], ['Abigail', 'Joey']]

Umgang mit Duplikaten

Beim Umgang mit Sammlungen mit doppelten Schlüsseln verwendet pluck() den letzten Wert, der jedem Schlüssel zugeordnet ist:

$collection = collect([
    ['brand' => 'Tesla',  'color' => 'red'],
    ['brand' => 'Pagani', 'color' => 'white'],
    ['brand' => 'Tesla',  'color' => 'black'],
    ['brand' => 'Pagani', 'color' => 'orange'],
]);

$plucked = $collection->pluck('color', 'brand');

$plucked->all();
// Output: ['Tesla' => 'black', 'Pagani' => 'orange']

Was ist select()?

Die Methode select() in Laravel ähnelt eher der SELECT-Anweisung von SQL und ermöglicht es Ihnen, mehrere Schlüssel aus der Sammlung auszuwählen und nur diese Schlüssel als neue Sammlung zurückzugeben.

Beispiel für select()

Betrachten wir eine Sammlung von Benutzern, deren Namen und Rollen Sie abrufen möchten:

$users = collect([
    ['name' => 'Taylor Otwell', 'role' => 'Developer', 'status' => 'active'],
    ['name' => 'Victoria Faith', 'role' => 'Researcher', 'status' => 'active'],
]);

$selectedUsers = $users->select(['name', 'role']);

$selectedUsers->all();
// Output: [
//     ['name' => 'Taylor Otwell', 'role' => 'Developer'],
//     ['name' => 'Victoria Faith', 'role' => 'Researcher'],
// ]

Mit select() können Sie mehrere Attribute auf einmal aus der Sammlung abrufen.

Hauptunterschiede zwischen pluck() und select()

  • Zweck:

    • pluck() wird verwendet, um ein einzelnes Attribut oder Schlüssel-Wert-Paare aus einer Sammlung zu extrahieren.
    • select() wird verwendet, um mehrere Attribute von jedem Element in der Sammlung abzurufen, ähnlich einer SQL-Abfrage.
  • Rückgabestruktur:

    • pluck() gibt ein flaches Array von Werten oder ein assoziatives Array zurück, wenn ein zweiter Schlüssel bereitgestellt wird.
    • select() gibt eine Sammlung von Arrays zurück, die nur die angegebenen Schlüssel enthalten.
  • Verwendung:

    • Verwenden Sie pluck(), wenn Sie eine Liste von Werten aus einem bestimmten Schlüssel benötigen.
    • Verwenden Sie select(), wenn Sie mehrere Felder aus jedem Element in der Sammlung benötigen.

Wann welche verwenden?

  • Verwenden Sie pluck(), wenn:

    • Sie müssen Werte aus einem einzelnen Schlüssel extrahieren.
    • Sie haben es mit verschachtelten Daten zu tun und möchten bestimmte verschachtelte Attribute abrufen.
  • Verwenden Sie select(), wenn:

    • Sie müssen mehrere Schlüssel oder Attribute abrufen.
    • Sie möchten die Daten neu strukturieren, um sich auf bestimmte Felder zu konzentrieren.

Abschluss

In Laravel 11 bieten sowohl pluck() als auch select() flexible Möglichkeiten zum Bearbeiten von Sammlungen. Während pluck() das Extrahieren einzelner Attribute vereinfacht, gibt Ihnen select() mehr Kontrolle, wenn Sie mit mehreren Attributen arbeiten müssen. Wenn Sie die Unterschiede zwischen diesen beiden Methoden kennen, können Sie Ihre Datenbearbeitungsprozesse optimieren und saubereren, effizienteren Code schreiben.

Indem Sie sowohl pluck() als auch select() beherrschen, können Sie komplexe Datenstrukturen in Ihren Laravel-Anwendungen problemlos verarbeiten. Viel Spaß beim Codieren!

Freigabeerklärung Dieser Artikel ist reproduziert unter: https://dev.to/asfiaaiman/undstanding-the-difference-bet zwischen-pluck-and-select-in-laravel-11-398i?1 Wenn es zu Verletzungen besteht, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3