Laravel (5.7) Красноречивые коллекции
Красноречивые Коллекции
В этом уроке мы проведем вас через Eloquent Collections Laravel, этот урок будет разделен на Введение, Доступные методы и затем пользовательские коллекции.
Вступление
В laravel все множественные результирующие наборы, возвращаемые Eloquent, являются экземплярами объекта IlluminateDatabaseEloquentCollection, это включает в себя результаты, которые извлекаются с помощью метода get, или к ним обращаются через отношение. Объект коллекции Eloquent расширяет базовую коллекцию Laravel, следовательно, он, естественно, наследует десятки методов, которые свободно работают с базовым массивом моделей Eloquent.
Все коллекции также служат итераторами, позволяя вам зацикливать их, как если бы они были простыми массивами PHP:
$users = App\User::where('active', 1)->get();
foreach ($users as $user) {
echo $user->name;
}
Предупреждение. Хотя большинство методов коллекции Eloquent возвращают новый экземпляр коллекции Eloquent, все методы pluck, keys, zip, collapse, flatten и flip возвращают базовый экземпляр коллекции. Аналогично, если у нас есть случай, когда операция карты возвращает коллекцию, которая не содержит моделей Eloquent, операция карты будет автоматически приведена к базовой коллекции.
Доступные методы
Базовая коллекция
Все коллекции Eloquent расширяют базовый объект коллекции Laravel; следовательно, они будут наследовать все мощные методы, предоставляемые базовым классом коллекции, к которым относятся эти методы:
все средний средний ломоть коллапс скомбинировать CONCAT содержит containsStrict подсчитывать Crossjoin дд разница diffKeys свалка каждый eachSpread каждый Кроме фильтр первый flatMap расплющить кувырок забывать forPage получить группа по имеет взрываться пересекаться пустой isNotEmpty keyBy ключи прошлой карта mapInto mapSpread mapToGroups mapWithKeys Максимум медиана сливаться мин Режим энный только подушечка раздел труба срывать поп перед именем вытащить От себя положил случайный уменьшить отклонять задний ход поиск сдвиг шарканье ломтик немного Сортировать Сортировать по sortByDesc сращивание Трещина сумма принимать нажмите ToArray toJson преобразование союз уникальный uniqueStrict если ценности когда где whereStrict в которой whereInStrict whereNotIn whereNotInStrict застежка-молния
Собственные коллекции
В некоторых случаях вам нужно использовать пользовательский объект Collection со своими собственными методами расширения, в таких случаях вы можете переопределить метод newCollection в вашей модели:
<?php
namespace App;
use App\CustomCollection;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* this will create a new Eloquent Collection instance.
*
* @param array $models
* @return \Illuminate\Database\Eloquent\Collection
*/
public function newCollection(array $models = [])
{
return new CustomCollection($models);
}
}
После того, как вы успешно определили метод newCollection, вы получите экземпляр вашей пользовательской коллекции каждый раз, когда Eloquent возвращает экземпляр Collection этой модели. Если вы хотите использовать пользовательскую коллекцию для каждой модели вашего приложения, вам следует переопределить метод newCollection в классе базовой модели, который расширяется каждой моделью в вашем приложении.
Новый контент: Composer: менеджер зависимостей для PHP , R программирования