Коллекции в Laravel более простым способом

RedDeveloper
05.05.2023 11:59
Коллекции в Laravel более простым способом

Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря своим методам, они делают код очень простым для понимания и читабельным.

Введение

У нас также есть вспомогательная функция collect(), с помощью которой мы можем играть с данными массива.

Расширение класса Illumniate\Support\Collection в Laravel означает, что мы можем добавить наши собственные методы в коллекцию.

Быстрый пример коллекции

Я постараюсь показать это как можно проще.

Я создал маршрут /in CollectionController и теперь давайте посмотрим быстрый пример коллекции в методе index.

public function index()
    {
        $myArr = [1,2,3,4,5,6,7,8,9,10];
        $collection = collect($myArr);
        $collection = $collection->chunk(3);
    }
//Result:
// Illuminate\Support\Collection {#288 ▼ // app/Http/Controllers/CollectionController.php:15
        //     #items: array:4 [▼
        //       0 => Illuminate\Support\Collection {#283 ▼
        //         #items: array:3 [▶]
        //         #escapeWhenCastingToString: false
        //       }
        //       1 => Illuminate\Support\Collection {#284 ▼
        //         #items: array:3 [▶]
        //         #escapeWhenCastingToString: false
        //       }
        //       2 => Illuminate\Support\Collection {#286 ▼
        //         #items: array:3 [▶]
        //         #escapeWhenCastingToString: false
        //       }
        //       3 => Illuminate\Support\Collection {#287 ▼
        //         #items: array:1 [▶]
        //         #escapeWhenCastingToString: false
        //       }
        //     ]
        //     #escapeWhenCastingToString: false
        //   }

В приведенном выше методе мы используем вспомогательную функцию collect() для преобразования массива в формат коллекции. А с помощью переменной $collection мы выполняем метод chunk(), чтобы сделать кусок из трех элементов. Он возьмет три элемента из массива и преобразует их в массив, который будет содержать только три элемента.

Таким же образом можно выполнить еще несколько действий над одной и той же коллекцией.

Например, вы хотите получить только первый массив, состоящий из 3 элементов.

$collection->chunk(3)->first();
// Illuminate\Support\Collection {#283 ▼ // app/Http/Controllers/CollectionController.php:15
        //     #items: array:3 [▼
        //       0 => 1
        //       1 => 2
        //       2 => 3
        //     ]
        //     #escapeWhenCastingToString: false
        //   }

С помощью этих примеров. Я надеюсь, что вы, по крайней мере, получили представление о том, что делают коллекции.

Методы коллекций

Я собираюсь объяснить несколько методов, которые мы можем использовать для работы с массивами.

Коллекции в Laravel предоставляют ряд полезных методов для работы с данными. Например, их можно использовать для фильтрации, сортировки, группировки и преобразования данных. Некоторые из наиболее часто используемых методов включают map, filter, reduce, pluck, groupBy, sortBy и take.

  1. map: Метод map позволяет применить функцию обратного вызова к каждому элементу коллекции и вернуть новую коллекцию с преобразованными значениями. Например, допустим, у нас есть массив чисел от 1 до 10, и мы хотим удвоить каждый элемент:
$numbers = range(1, 10);
$collection = collect($numbers);
$doubled = $collection->map(function ($num) {
    return $num * 2;
});
  1. фильтр: Метод filter позволяет создать новую коллекцию, содержащую только те элементы, которые удовлетворяют определенному условию. Например, допустим, мы хотим создать новую коллекцию, содержащую только четные числа из нашего исходного массива:
$evens = $collection->filter(function ($num) {
    return $num % 2 == 0;
});
  1. reduce: Метод reduce позволяет применять функцию обратного вызова к каждому элементу коллекции и накапливать единый результат. Например, допустим, мы хотим вычислить сумму всех чисел в нашем исходном массиве:
public function index()
    {
        $myArr = [1,2,3,4,5,6,7,8,9,10];
        $collection = collect($myArr);
        $total = $collection->reduce(function ($carry, $num) {
            echo $carry . ' + ' . $num . ' = ' . ($carry + $num);
            echo '<br>';
            return $carry + $num;
        }, 0);
        dd($total);
    }
0 + 1 = 1
1 + 2 = 3
3 + 3 = 6
6 + 4 = 10
10 + 5 = 15
15 + 6 = 21
21 + 7 = 28
28 + 8 = 36
36 + 9 = 45
45 + 10 = 55
  1. pluck: Метод pluck позволяет извлечь одно значение из каждого элемента коллекции и вернуть новую коллекцию с этими значениями. Например, допустим, у нас есть массив объектов, представляющих пользователей, и мы хотим создать новую коллекцию, содержащую только их адреса электронной почты:
public function index()
    {
        $users = [
                ['name' => 'John', 'email' => '[email protected]'],
                ['name' => 'Jane', 'email' => '[email protected]'],
                ['name' => 'Bob', 'email' => '[email protected]'],
        ];
        $collection = collect($users);
        $emails = $collection->pluck('email');
        dd($emails);
    }
  1. groupBy: Метод groupBy позволяет группировать элементы коллекции по определенному ключу или свойству. Например, допустим, у нас есть массив пользователей, и мы хотим сгруппировать их по возрасту:
public function index()
    {
        $users = [
            ['name' => 'John', 'age' => 25],
            ['name' => 'Jane', 'age' => 30],
            ['name' => 'Bob', 'age' => 25],
            ];  
        $collection = collect($users);
        $grouped = $collection->groupBy('age');
        dd($grouped);
    }
  1. sortBy: Метод sortBy позволяет сортировать элементы коллекции по определенному ключу или свойству. Например, допустим, у нас есть массив пользователей, и мы хотим отсортировать их по имени:
public function index()
    {
        $users = [    ['name' => 'John', 'age' => 25],
    ['name' => 'Jane', 'age' => 30],
    ['name' => 'Bob', 'age' => 25],
];
$collection = collect($users);
$sorted = $collection->sortBy('name');
    dd($sorted->values()->all());
    }

В Laravel есть много методов, которые помогут вам не использовать серию Foreach и просто делать вещи с помощью удобных методов.

Теперь я предполагаю, что вы поняли, что такое коллекции. Вы можете посмотреть видео ниже, которое поможет вам продвинуться на шаг вперед.

Это видео было создано Povilas From LaravelDaily

Посмотреть все методы коллекционирования: Laravel Collection Methods

Вы также можете прочитать: Транзакции БД

Заключение

В целом, коллекции - это мощный инструмент в Laravel, который может помочь вам написать более выразительный и эффективный код и упростить многие общие задачи обработки данных.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.