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']
Метод select() в Laravel больше похож на оператор 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