」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 理解 Laravel 11 中 pluck() 和 select() 之間的差異

理解 Laravel 11 中 pluck() 和 select() 之間的差異

發佈於2024-11-08
瀏覽:197

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

Laravel 是最受歡迎的 PHP 架構之一,提供了一系列強大的資料操作方法。其中,pluck() 和 select() 在處理集合時經常使用。儘管它們看起來相似,但它們的目的卻不同。在本文中,我們將探討這兩種方法之間的差異,解釋何時使用每種方法,並提供實際的編碼範例來示範它們在 Laravel 11 中的用法。

什麼是 pluck()?

pluck() 方法旨在從集合中的單一鍵中提取值。當您想要從陣列或物件集合中檢索特定屬性時,它特別方便。

pluck() 的範例

假設您有一系列產品,並且您只想提取產品名稱:

$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']

此外,您可以使用 pluck() 將自訂鍵指派給結果集合:

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

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

使用 pluck() 嵌套值

pluck() 方法也支援使用點表示法來擷取巢狀值:

$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']]

處理重複項

處理具有重複鍵的集合時,pluck() 將使用與每個鍵關聯的最後一個值:

$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']

什麼是選擇()?

Laravel 中的 select() 方法更類似於 SQL 的 SELECT 語句,允許您從集合中選擇多個鍵並僅傳回這些鍵作為新集合。

select() 的範例

讓我們考慮要檢索名稱和角色的使用者集合:

$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'],
// ]

透過select(),可以一次從集合中拉取多個屬性。

pluck() 和 select() 之間的主要區別

  • 目的

    • pluck() 用於從集合中提取單一屬性或鍵值對。
    • select() 用於從集合中的每個項目中檢索多個屬性,類似於 SQL 查詢。
  • 返回結構:

    • 當提供第二個鍵時,pluck() 傳回值的平面數組或關聯數組。
    • select() 傳回僅包含指定鍵的陣列集合。
  • 用法

    • 當您需要特定鍵的值清單時,請使用 pluck()。
    • 當您需要集合中每個元素的多個欄位時,請使用 select()。

何時使用哪一個?

  • :

    時使用 pluck()
    • 您需要從單一鍵中提取值。
    • 您正在處理嵌套資料並想要檢索特定的嵌套屬性。
  • :

    時使用 select()
    • 您需要檢索多個鍵或屬性。
    • 您想要重組資料以專注於某些欄位。

結論

在 Laravel 11 中,pluck() 和 select() 都提供了靈活的方法來操作集合。 pluck() 簡化了提取單一屬性的過程,而 select() 在需要處理多個屬性時為您提供了更多控制權。了解這兩種方法之間的差異可以讓您優化資料操作流程並編寫更清晰、更有效率的程式碼。

透過掌握 pluck() 和 select(),您可以在 Laravel 應用程式中輕鬆處理複雜的資料結構。快樂編碼!

版本聲明 本文轉載於:https://dev.to/asfiaaiman/understanding-the-difference-between-pluck-and-select-in-laravel-11-398i?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3