Laravel 是最受歡迎的 PHP 架構之一,提供了一系列強大的資料操作方法。其中,pluck() 和 select() 在處理集合時經常使用。儘管它們看起來相似,但它們的目的卻不同。在本文中,我們將探討這兩種方法之間的差異,解釋何時使用每種方法,並提供實際的編碼範例來示範它們在 Laravel 11 中的用法。
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() 方法也支援使用點表示法來擷取巢狀值:
$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 語句,允許您從集合中選擇多個鍵並僅傳回這些鍵作為新集合。
讓我們考慮要檢索名稱和角色的使用者集合:
$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()在 Laravel 11 中,pluck() 和 select() 都提供了靈活的方法來操作集合。 pluck() 簡化了提取單一屬性的過程,而 select() 在需要處理多個屬性時為您提供了更多控制權。了解這兩種方法之間的差異可以讓您優化資料操作流程並編寫更清晰、更有效率的程式碼。
透過掌握 pluck() 和 select(),您可以在 Laravel 應用程式中輕鬆處理複雜的資料結構。快樂編碼!
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3