Коллекции в 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' => 'john@example.com'],
                ['name' => 'Jane', 'email' => 'jane@example.com'],
                ['name' => 'Bob', 'email' => 'bob@example.com'],
        ];
        $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, который может помочь вам написать более выразительный и эффективный код и упростить многие общие задачи обработки данных.

Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?

05.05.2023 14:00

Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.

JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы

05.05.2023 11:57

Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний, то, не теряя времени, практикуйте наш бесплатный онлайн тест 1100+ JavaScript MCQs и развивайте свои навыки и знания.

Массив зависимостей в React
Массив зависимостей в React

05.05.2023 09:44

Все о массиве Dependency и его связи с useEffect.

Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий

05.05.2023 09:26

Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут вам настроить, как будет выглядеть ваш сайт Temple, и вы можете настроить его дизайн в зависимости от ваших потребностей в дополнение к более чем 15+...

Некоторые методы, о которых вы не знали, что они существуют в Python.
Некоторые методы, о которых вы не знали, что они существуют в Python.

04.05.2023 13:44

Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science, веб-разработки, этот язык программирования по-прежнему остается в тренде.