Может войдёшь?
Черновики Написать статью Профиль

Коллекции

перевод документация 5.х

  1. 1. Введение
  2. 2. Доступные методы
    1. 2.1. Базовая коллекция
  3. 3. Пользовательские коллекции
Этот перевод актуален для англоязычной документации на (ветка 5.3) , (ветка 5.2) и (ветка 5.1). Опечатка? Выдели и нажми Ctrl+Enter.

Введение

Все наборы результатов, возвращаемые Eloquent, являются экземплярами объекта Illuminate\Database\Eloquent\Collection, в том числе результаты, получаемые с помощью метода PHPget() или доступные через отношения. Объект коллекции Eloquent наследует базовую коллекцию Laravel. Поэтому он наследует десятки методов, используемых для гибкой работы с базовым набором моделей Eloquent.

Конечно же, все коллекции также служат в качестве итераторов, позволяя вам перебирать их в цикле, как будто они простые PHP массивы:

PHP
$users App\User::where('active'1)->get();

foreach (
$users as $user) {
  echo 
$user->name;
}

Тем не менее, коллекции гораздо мощнее, чем массивы и предоставляют различные варианты операций отображения/уменьшения, которые могут быть сцеплены с использованием интуитивно понятного интерфейса. Например, давайте удалим все неактивные модели и возвратим имена для каждого оставшегося пользователя:

PHP
$users App\User::where('active'1)->get();

$names $users->reject(function ($user) {
  return 
$user->active === false;
})
->
map(function ($user) {
  return 
$user->name;
});

While most Eloquent collection methods return a new instance of an Eloquent collection, the `pluck`, `keys`, `zip`, `collapse`, `flatten` and `flip` methods return a [base collection](/docs//collections) instance.

While most Eloquent collection methods return a new instance of an Eloquent collection, the `pluck`, `keys`, `zip`, `collapse`, `flatten` and `flip` methods return a [base collection](/docs//collections) instance. Likewise, if a `map` operation returns a collection that does not contain any Eloquent models, it will be automatically cast to a base collection.

+ 5.3 5.2

добавлено в 5.3 () 5.2 ()

Большинство методов для работы с коллекциями Eloquent возвращают новый экземпляр коллекции Eloquent, но методы PHPpluck(), PHPkeys(), PHPzip(), PHPcollapse(), PHPflatten() и PHPflip() возвращают экземпляр базовой коллекции. Более того, если операция PHPmap() вернёт коллекцию, в которой нет моделей Eloquent, она будет автоматически приведена к базовой коллекции.

Доступные методы

Базовая коллекция

Все Eloquent коллекции наследуют объект базовой коллекции Laravel; поэтому они наследуют все мощные методы, предоставляемые базовым классом коллекции:
all
avg
chunk
collapse
combine
contains
count
diff
diffkeys
each
every
except
filter
first
flatmapflatmap
flatten
flip
forget
forPage
get
groupBy
has
implode
intersect
isEmpty
keyBy
keys
last
map
max
merge
min
only
pluck
pop
prepend
pull
push
put
random
reduce
reject
reverse
search
shift
shuffle
slice
sort
sortBy
sortByDesc
splice
sum
take
toArray
toJson
transform
((/docs/v5/collections#method-union)
unique
values
where
wherestrict
wherein
whereinloose
whereLoose
zip

Пользовательские коллекции

Если вам нужно использовать пользовательский объект Collection со своими собственными методами наследования, вы можете переопределить метод PHPnewCollection() в вашей модели:

PHP
<?php

namespace App;

use 
App\CustomCollection;
use 
Illuminate\Database\Eloquent\Model;

class 
User extends Model
{
  
/**
    * Создание экземпляра новой Eloquent коллекции.
    *
    * @param  array  $models
    * @return \Illuminate\Database\Eloquent\Collection
    */
  
public function newCollection(array $models = [])
  {
    return new 
CustomCollection($models);
  }
}

После определения метода PHPnewCollection() вы получите экземпляр пользовательской коллекции при любом обращении к экземпляру Collection этой модели. Если вы хотите использовать собственную коллекцию для каждой модели в вашем приложении, вы должны переопределить метод PHPnewCollection() в базовом классе модели, наследуемой всеми вашими моделями.

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.