Класс ResultSet
Представляет результаты, полученные после выполнения запроса для определённой таблицы. Этот объект отвечает за правильное вложение ключей результатов, полученных из запроса, приведение каждого поля к соответствующему типу и выполнение дополнительных запросов, необходимых для ленивой загрузки внешних ассоциаций.
Краткое описание свойств
- $_autoFields protected
bool|nullОтслеживает значение свойства $_autoFields объекта $query, переданного в конструктор.
- $_containMap protected
arrayСписок ассоциаций, которые должны быть загружены ленивой загрузкой.
- $_count protected
intСодержит количество записей в этом наборе результатов.
- $_current protected
object|arrayПоследняя извлеченная запись из оператора.
- $_defaultAlias protected
stringБазовое псевдоним таблицы.
- $_defaultTable protected
Cake\ORM\TableБазовый экземпляр таблицы.
- $_driver protected
Cake\Database\DriverInterfaceОбъект драйвера базы данных.
- $_entityClass protected
stringПолное имя пространства имён класса, используемого для гидратации результатов.
- $_hydrate protected
boolОпределяет, нужно ли гидратировать результаты в объекты.
- $_index protected
intУказатель на номер следующей записи, которая должна быть извлечена.
- $_map protected
array<string, mixed>Карта полей, извлечённых из оператора с их типом и таблицей, к которой они относятся.
- $_matchingMap protected
array<string, mixed>Список ассоциаций, которые должны быть размещены под ключом результата
_matchingData. - $_matchingMapColumns protected
array<string, mixed>Список сопоставляемых ассоциаций и ключей столбцов, ожидаемых от каждой из них.
- $_results protected
SplFixedArray|arrayРезультаты, которые были извлечены или гидратированы в результаты.
- $_statement protected
Cake\Database\StatementInterfaceОператор базы данных, содержащий результаты.
- $_useBuffering protected
boolОпределяет, нужно ли буферизовать извлеченные результаты из оператора.
Краткое описание методов
-
__construct() public
Конструктор
-
__debugInfo() public
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
-
__serialize() public
Сериализует результат.
-
__unserialize() public
Десериализует результат.
-
_calculateAssociationMap() protected
Вычисляет список ассоциаций, которые должны быть загружены при получении каждого запися
-
_calculateColumnMap() protected
Создаёт карту ключей строк из запроса select, которая может быть использована для более быстрого гидратирования вложенных наборов результатов.
-
_createMatcherFilter() protected
Возвращает вызываемый объект, который получает значение и возвращает, соответствует ли оно определённому условию.
-
_extract() protected
Возвращает столбец из $data, который можно извлечь, перебирая имена столбцов, содержащихся в $path. Возвращает массивы для элементов, представленных
{*} -
_fetchResult() protected
Вспомогательная функция для извлечения следующего результата из оператора или данных результата.
-
_groupResult() protected
Правильно вкладывает ключи результатов, включая те, которые поступают от ассоциаций.
-
_propertyExtractor() protected
Возвращает вызываемый объект, который может быть использован для извлечения свойства или столбца из массива или объекта на основе пути с разделителем точек.
-
_simpleExtract() protected
Возвращает столбец из $data, который можно извлечь, перебирая имена столбцов, содержащихся в $path.
-
append() public
Возвращает новый набор результатов в результате конкатенации списка элементов в этом наборе с переданным списком элементов.
-
appendItem() public
Добавляет один элемент, создавая новый набор.
-
avg() public
Возвращает среднее значение всех значений, извлечённых с помощью $path или этого набора.
-
buffered() public
Возвращает новый набор, где операции, выполняемые этим набором, выполняются только один раз, независимо от того, сколько раз новый набор итерируется.
-
cartesianProduct() public
Создаёт новый набор, который является декартовым произведением текущего набора.
-
chunk() public
Разбивает набор на меньшие массивы заданного размера.
-
chunkWithKeys() public
Разбивает набор на меньшие массивы заданного размера.
-
combine() public
Возвращает новый набор, где значения извлекаются на основе пути к значению, а затем индексируются по пути к ключу. Этот метод может также генерировать родительские группы на основе пути к свойству группы.
-
compile() public
Итерирует все элементы в этом наборе и выполняет все наложенные операции над ними, а затем возвращает новый набор с результатом. Это полезно для преобразования необратимых внутренних итераторов в набор, который можно обработать повторно и использовать несколько раз.
-
contains() public
Возвращает true, если $value присутствует в этом наборе. Сравнения производятся по значению и типу.
-
count() public
Даёт количество строк в наборе результатов.
-
countBy() public
Сортирует список по группам и возвращает счётчик количества элементов в каждой группе. Аналогично groupBy, но вместо возвращения списка значений возвращает счётчик значений в этой группе.
-
countKeys() public
Возвращает количество уникальных ключей в этом итераторе. Это равно количеству элементов, которые будет содержать набор после вызова
toArray() -
current() public
Возвращает текущую запись в итераторе результата.
-
each() public
Применяет обратный вызов к элементам в этом наборе.
-
every() public
Возвращает true, если все значения в этом наборе проходят проверку истинности, заданную в обратном вызове.
-
extract() public
Возвращает новый набор, содержащий значение столбца или свойства, найденного в каждом из элементов.
-
filter() public
Просматривает каждое значение в наборе и возвращает другой набор со всеми значениями, которые проходят проверку истинности. В результирующем наборе будут присутствовать только те значения, для которых обратный вызов возвращает true.
-
first() public
Получает первую запись из набора результатов.
-
firstMatch() public
Возвращает первый результат, соответствующий всем парам ключ-значение, перечисленным в условиях.
-
groupBy() public
Разбивает набор на группы, сгруппированные по результату выполнения каждого значения через обратный вызов. Если $callback — строка вместо вызываемого объекта, группирует по свойству, названному $callback, для каждого из значений.
-
indexBy() public
Для заданного списка и функции обратного вызова, возвращающей ключ для каждого элемента в списке (или имени свойства), возвращает объект с индексом каждого элемента. Подобно groupBy, но для случаев, когда ключи уникальны.
-
insert() public
Возвращает новый набор, содержащий каждый элемент, найденный в
$values, как свойство внутри соответствующих элементов в этом наборе. Свойство, куда будут вставлены значения, описывается параметром$path -
isEmpty() public
Возвращает, есть ли элементы в этом наборе.
-
jsonSerialize() public
Возвращает данные, которые можно преобразовать в JSON. Это возвращает те же данные, что и
toArray(), содержащие только уникальные ключи. -
key() public
Возвращает ключ текущей записи в итераторе.
-
last() public
Возвращает последний результат в этом наборе.
-
lazy() public
Возвращает новый набор, где любые операции, присоединённые к нему, гарантированно будут выполняться лениво. То есть элементы будут выводиться по одному.
-
listNested() public
Возвращает новую коллекцию с каждым элементом этой коллекции после разворачивания древовидной структуры. Структура дерева определяется вложенностью элементов под ключом с известным именем. Можно указать такое имя, используя параметр '$nestingKey'.
-
map() public
Возвращает другую коллекцию после изменения каждого значения в этой коллекции с помощью предоставленной вызываемой функции.
-
match() public
Просматривает каждое значение в списке, возвращая коллекцию всех значений, которые содержат все пары ключ-значение, перечисленные в $conditions.
-
max() public
Возвращает верхний элемент в этой коллекции после сортировки по свойству. Проверьте метод sortBy для получения информации о функции обратного вызова и параметрах $sort.
-
median() public
Возвращает медиану всех значений, извлеченных с помощью $path, или этой коллекции.
-
min() public
Возвращает нижний элемент в этой коллекции после сортировки по свойству. Проверьте метод sortBy для получения информации о функции обратного вызова и параметрах $sort.
-
nest() public
Возвращает новую коллекцию, где значения вложены в древовидную структуру на основе пути к свойству id и пути к свойству родительского id.
-
newCollection() protected
Возвращает новую коллекцию.
-
next() public
Перемещает указатель итератора к следующей записи.
-
optimizeUnwrap() protected
Развертывает эту итерацию и возвращает самую простую итерируемую структуру, которую можно использовать для извлечения данных.
-
prepend() public
Добавляет набор элементов в начало коллекции, создавая новую коллекцию.
-
prependItem() public
Добавляет один элемент в начало, создавая новую коллекцию.
-
reduce() public
Сворачивает значения в этой коллекции в одно значение, как результат применения функции обратного вызова ко всем элементам. $zero — начальное состояние сокращения, а каждый последующий шаг должен возвращаться функцией обратного вызова. Если $zero опущена, то будет использоваться первое значение коллекции, и сокращение начнется со второго элемента.
-
reject() public
Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые не проходят проверку истинности. Это противоположно
filter. -
rewind() public
Перематывает ResultSet.
-
sample() public
Возвращает новую коллекцию с максимальным количеством $size случайных элементов из этой коллекции.
-
serialize() public
Сериализует результат.
-
shuffle() public
Возвращает новую коллекцию с элементами в случайном порядке. Эта функция не сохраняет исходные ключи в коллекции.
-
skip() public
Возвращает новую коллекцию, которая будет пропускать указанное количество элементов в начале итерации.
-
some() public
Возвращает true, если любое из значений в этой коллекции проходит проверку истинности, предоставленную в функции обратного вызова.
-
sortBy() public
Возвращает отсортированную итерацию элементов этой коллекции, упорядоченную по возрастанию результатов применения функции обратного вызова к каждому значению. $callback также может быть строкой, представляющей имя столбца или свойства.
-
stopWhen() public
Создает новую коллекцию, которая при итерации прекратит выдачу результатов, если предоставленное условие истинно.
-
sumOf() public
Возвращает общую сумму всех значений, извлеченных с помощью $matcher, или этой коллекции.
-
take() public
Возвращает новую коллекцию с максимальным количеством $size элементов в порядке, в котором эта коллекция была создана. Если передать второй параметр, он определит, с какой позиции начинать извлечение элементов.
-
takeLast() public
Возвращает последние N элементов коллекции.
-
through() public
Передает эту коллекцию как первый аргумент вызываемой функции. Это полезно для декорирования всей коллекции другим объектом.
-
toArray() public
Возвращает массивное представление результатов.
-
toList() public
Возвращает массивное представление результатов с числовыми индексами. Это эквивалентно вызову
toArray(false). -
transpose() public
Транспонирует строки и столбцы в столбцы и строки.
-
unfold() public
Создает новую коллекцию, где элементы являются конкатенацией списков элементов, сгенерированных функцией преобразования, применяемой к каждому элементу исходной коллекции.
-
unserialize() public
Десериализует результат.
-
unwrap() public
Возвращает самую близкую вложенную итерацию, которую можно безопасно пройти, не теряя возможных преобразований. Это используется в основном для удаления пустых обёртков IteratorIterator, которые могут только замедлить процесс итерации.
-
valid() public
Есть ли еще результаты для извлечения из итератора?
-
zip() public
Объединяет элементы этой коллекции с каждым из элементов переданных итерируемых объектов, используя их позиционный индекс в качестве ссылки.
-
zipWith() public
Объединяет элементы этой коллекции с каждым из элементов переданных итерируемых объектов, используя их позиционный индекс в качестве ссылки.
Подробное описание методов
__construct() public
__construct(Cake\ORM\Query $query, Cake\Database\StatementInterface $statement)
Конструктор
Параметры
-
Cake\ORM\Query$query Запрос, откуда берутся результаты
-
Cake\Database\StatementInterface$statement Запрос для извлечения данных
__debugInfo() public
__debugInfo(): array<string, mixed>
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращает
array<string, mixed>__serialize() public
__serialize(): array
Сериализует результат набора.
Возвращает
array__unserialize() public
__unserialize(array $data): void
Десериализует результат набора.
Параметры
-
array$data Массив данных.
Возвращает
void_calculateAssociationMap() protected
_calculateAssociationMap(Cake\ORM\Query $query): void
Вычисляет список ассоциаций, которые должны быть загружены при извлечении каждой записи
Параметры
-
Cake\ORM\Query$query Запрос, из которого нужно получить ассоциации
Возвращает
void_calculateColumnMap() protected
_calculateColumnMap(Cake\ORM\Query $query): void
Создаёт карту ключей строк из предложения SELECT запроса, которая может быть использована для более быстрого гидратирования вложенных наборов результатов.
Параметры
-
Cake\ORM\Query$query Запрос, из которого нужно получить карту столбцов
Возвращает
void_createMatcherFilter() protected
_createMatcherFilter(array $conditions): Closure
Возвращает вызываемый объект, который принимает значение и возвращает, соответствует ли оно определённому условию.
Параметры
-
array$conditions Список условий для сопоставления, где ключ — путь к свойству для извлечения из текущего элемента, а значение — значение для сравнения с элементом.
Возвращает
Closure_extract() protected
_extract(ArrayAccess|array $data, array<string> $parts): mixed
Возвращает столбец из $data, который можно извлечь, перебирая имена столбцов, содержащиеся в $path. Возвращает массивы для элементов, представленных {*}
Параметры
-
ArrayAccess|array$data Данные.
-
array<string>$parts Путь для извлечения.
Возвращает
mixed_fetchResult() protected
_fetchResult(): mixed
Вспомогательная функция для извлечения следующего результата из запроса или данных.
Возвращает
mixed_groupResult() protected
_groupResult(array $row): Cake\Datasource\EntityInterface|array
Правильно вкладывает ключи результатов, включая те, которые получены из ассоциаций.
Параметры
-
array$row Массив, содержащий столбцы и значения, или false, если результатов нет.
Возвращает
Cake\Datasource\EntityInterface|array_propertyExtractor() protected
_propertyExtractor(callable|string $path): callable
Возвращает вызываемый объект, который может использоваться для извлечения свойства или столбца из массива или объекта на основе пути, разделённого точкой.
Параметры
-
callable|string$path Путь к столбцу, разделённый точкой, для получения конечного результата, или вызываемый объект, который позаботится об этом.
Возвращает
callable_simpleExtract() protected
_simpleExtract(ArrayAccess|array $data, array<string> $parts): mixed
Возвращает столбец из $data, который можно извлечь, перебирая имена столбцов, содержащиеся в $path.
Параметры
-
ArrayAccess|array$data Данные.
-
array<string>$parts Путь для извлечения.
Возвращает
mixedappend() public
append(iterable $items): self
Возвращает новую коллекцию в результате конкатенации списка элементов в этой коллекции со списком переданных элементов.
Параметры
-
iterable$items
Возвращает
selfappendItem() public
appendItem(mixed $item, mixed $key = null): self
Добавляет один элемент, создавая новую коллекцию.
Параметры
-
mixed$item -
mixed$key optional
Возвращает
selfavg() public
avg(callable|string|null $path = null): float|int|null
Возвращает среднее значение всех значений, извлечённых с помощью $path, или всей коллекции.
Пример:
$items = [
['invoice' => ['total' => 100]],
['invoice' => ['total' => 200]]
];
$total = (new Collection($items))->avg('invoice.total');
// Total: 150
$total = (new Collection([1, 2, 3]))->avg();
// Total: 2 Среднее пустого набора или 0 строк — null. Коллекции с null значениями не считаются пустыми.
Параметры
-
callable|string|null$path optional
Возвращает
float|int|nullbuffered() public
buffered(): self
Возвращает новую коллекцию, где операции, выполненные этой коллекцией, выполняются только один раз. Независимо от того, сколько раз новая коллекция будет перебираться.
Это также можно использовать для того, чтобы сделать любой неперематываемый итератор перематываемым.
Возвращает
selfcartesianProduct() public
cartesianProduct(callable|null $operation = null, callable|null $filter = null): Cake\Collection\CollectionInterface
Создаёт новую коллекцию, которая является декартовым произведением текущей коллекции.
Для создания декартова произведения коллекция должна содержать одномерные данные.
Пример
$collection = new Collection([['A', 'B', 'C'], [1, 2, 3]]);
$result = $collection->cartesianProduct()->toArray();
$expected = [
['A', 1],
['A', 2],
['A', 3],
['B', 1],
['B', 2],
['B', 3],
['C', 1],
['C', 2],
['C', 3],
]; Параметры
-
callable|null$operation optional Вызываемый объект, позволяющий настроить результат произведения.
-
callable|null$filter optional Фильтрующая функция обратного вызова, которая должна возвращать true, чтобы результат был частью конечных результатов.
Возвращает
Cake\Collection\CollectionInterfaceИсключения
LogicExceptionchunk() public
chunk(int $chunkSize): self
Разбивает коллекцию на меньшие массивы заданного размера.
Пример:
$items [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; $chunked = (new Collection($items))->chunk(3)->toList(); // Returns [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]
Параметры
-
int$chunkSize
Возвращает
selfchunkWithKeys() public
chunkWithKeys(int $chunkSize, bool $keepKeys = true): self
Разбивает коллекцию на меньшие массивы заданного размера.
Пример:
$items ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5, 'f' => 6]; $chunked = (new Collection($items))->chunkWithKeys(3)->toList(); // Returns [['a' => 1, 'b' => 2, 'c' => 3], ['d' => 4, 'e' => 5, 'f' => 6]]
Параметры
-
int$chunkSize -
bool$keepKeys optional
Возвращает
selfcombine() public
combine(callable|string $keyPath, callable|string $valuePath, callable|string|null $groupPath = null): self
Возвращает новую коллекцию, где значения извлекаются по пути к значению, а затем индексируются по пути к ключу. Дополнительно этот метод может генерировать родительские группы по пути к свойству группы.
Примеры:
$items = [
['id' => 1, 'name' => 'foo', 'parent' => 'a'],
['id' => 2, 'name' => 'bar', 'parent' => 'b'],
['id' => 3, 'name' => 'baz', 'parent' => 'a'],
];
$combined = (new Collection($items))->combine('id', 'name');
// Result will look like this when converted to array
[
1 => 'foo',
2 => 'bar',
3 => 'baz',
];
$combined = (new Collection($items))->combine('id', 'name', 'parent');
// Result will look like this when converted to array
[
'a' => [1 => 'foo', 3 => 'baz'],
'b' => [2 => 'bar']
]; Параметры
-
callable|string$keyPath -
callable|string$valuePath -
callable|string|null$groupPath optional
Возвращает
selfcompile() public
compile(bool $keepKeys = true): self
Итерирует все элементы в этой коллекции и выполняет все накопленные операции над ними, в конце возвращает новую коллекцию с результатом. Это полезно для преобразования неперематываемых внутренних итераторов в коллекцию, которую можно перематывать и использовать несколько раз.
Распространённый случай использования — повторное использование той же переменной для вычисления разных данных. В таких случаях может быть полезно и эффективнее сначала скомпилировать коллекцию, а затем применить к ней дополнительные операции.
Пример:
$collection->map($mapper)->sortBy('age')->extract('name');
$compiled = $collection->compile();
$isJohnHere = $compiled->some($johnMatcher);
$allButJohn = $compiled->filter($johnMatcher); В примере выше, если бы коллекция не была скомпилирована заранее, итерации для map, sortBy и extract были бы выполнены дважды: один раз для получения $isJohnHere и один раз для $allButJohn
Можно рассматривать этот метод как способ создания контрольных точек для сложных вычислений в коллекции.
Параметры
-
bool$keepKeys optional
Возвращает
selfcontains() public
contains(mixed $value): bool
Возвращает true, если $value присутствует в этой коллекции. Сравнения проводятся как по значению, так и по типу.
Параметры
-
mixed$value
Возвращает
boolcount() public
count(): int
Возвращает количество строк в результирующем наборе.
Часть интерфейса Countable.
Возвращает
intcountBy() public
countBy(callable|string $path): self
Сортирует список в группы и возвращает количество элементов в каждой группе. Похож на groupBy, но вместо возврата списка значений возвращает количество значений в этой группе.
Когда $callback является строкой, это должно быть имя свойства для извлечения или путь, разделённый точками, к свойствам, которые должны быть пройдены, чтобы получить последнее в пути.
Пример:
$items = [
['id' => 1, 'name' => 'foo', 'parent_id' => 10],
['id' => 2, 'name' => 'bar', 'parent_id' => 11],
['id' => 3, 'name' => 'baz', 'parent_id' => 10],
];
$group = (new Collection($items))->countBy('parent_id');
// Or
$group = (new Collection($items))->countBy(function ($e) {
return $e['parent_id'];
});
// Result will look like this when converted to array
[
10 => 2,
11 => 1
]; Параметры
-
callable|string$path
Возвращает
selfcountKeys() public
countKeys(): int
Возвращает количество уникальных ключей в этом итераторе. Это то же самое, что и количество элементов, которые будет содержать коллекция после вызова toArray()
Этот метод имеет ряд предостережений. Обратитесь к CollectionInterface::count() для получения подробной информации.
Возвращает
intcurrent() public
current(): object|array
Возвращает текущую запись в результирующем итераторе
Часть интерфейса Iterator.
Возвращает
object|arrayeach() public
each(callable $callback): $this
Применяет обратный вызов к элементам в этой коллекции.
Пример:
$collection = (new Collection($items))->each(function ($value, $key) {
echo "Element $key: $value";
}); Параметры
-
callable$callback
Возвращает
$thisevery() public
every(callable $callback): bool
Возвращает true, если все значения в этой коллекции проходят тест истинности, указанный в обратном вызове.
Обратному вызову передаются значение и ключ тестируемого элемента, и он должен возвращать true, если тест пройден.
Пример:
$overTwentyOne = (new Collection([24, 45, 60, 15]))->every(function ($value, $key) {
return $value > 21;
}); Пустые коллекции всегда возвращают true.
Параметры
-
callable$callback
Возвращает
boolextract() public
extract(callable|string $path): self
Возвращает новую коллекцию, содержащую значение столбца или свойства, найденное в каждом из элементов.
Сопоставитель может быть строкой с именем свойства для извлечения или путем, разделённым точками, к свойствам, которые должны быть пройдены, чтобы получить последнее в пути.
Если столбец или свойство не могут быть найдены для определённого элемента в коллекции, эта позиция заполняется null.
Пример:
Извлечь имя пользователя для всех комментариев в массиве:
$items = [
['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']],
['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']]
];
$extracted = (new Collection($items))->extract('comment.user.name');
// Result will look like this when converted to array
['Mark', 'Renan'] Также можно извлечь уплощённую коллекцию из вложенных свойств
$items = [
['comment' => ['votes' => [['value' => 1], ['value' => 2], ['value' => 3]]],
['comment' => ['votes' => [['value' => 4]]
];
$extracted = (new Collection($items))->extract('comment.votes.{*}.value');
// Result will contain
[1, 2, 3, 4] Параметры
-
callable|string$path
Возвращает
selffilter() public
filter(callable|null $callback = null): self
Просматривает каждое значение в коллекции и возвращает другую коллекцию со всеми значениями, которые проходят тест истинности. Только значения, для которых обратный вызов возвращает true, будут присутствовать в результирующей коллекции.
Каждый раз при выполнении обратного вызова он будет получать значение элемента в текущей итерации, ключ элемента и эту коллекцию в качестве аргументов, в указанном порядке.
Пример:
Фильтрация нечётных чисел в массиве, в конце только значение 2 будет присутствовать в результирующей коллекции:
$collection = (new Collection([1, 2, 3]))->filter(function ($value, $key) {
return $value % 2 === 0;
}); Параметры
-
callable|null$callback optional
Возвращает
selffirst() public
first(): object|array|null
Получить первую запись из результирующего набора.
Этот метод также закроет курсор базового оператора.
Возвращает
object|array|nullfirstMatch() public
firstMatch(array $conditions): mixed
Возвращает первый результат, соответствующий всем парам ключ-значение, перечисленным в условиях.
Параметры
-
array$conditions
Возвращает
mixedgroupBy() public
groupBy(callable|string $path): self
Разделяет коллекцию на наборы, сгруппированные по результату выполнения каждого значения через обратный вызов. Если $callback является строкой, а не вызываемым объектом, группирует по свойству, названному $callback, для каждого из значений.
Когда $callback является строкой, это должно быть имя свойства для извлечения или путь, разделённый точками, к свойствам, которые должны быть пройдены, чтобы получить последнее в пути.
Пример:
$items = [
['id' => 1, 'name' => 'foo', 'parent_id' => 10],
['id' => 2, 'name' => 'bar', 'parent_id' => 11],
['id' => 3, 'name' => 'baz', 'parent_id' => 10],
];
$group = (new Collection($items))->groupBy('parent_id');
// Or
$group = (new Collection($items))->groupBy(function ($e) {
return $e['parent_id'];
});
// Result will look like this when converted to array
[
10 => [
['id' => 1, 'name' => 'foo', 'parent_id' => 10],
['id' => 3, 'name' => 'baz', 'parent_id' => 10],
],
11 => [
['id' => 2, 'name' => 'bar', 'parent_id' => 11],
]
]; Параметры
-
callable|string$path
Возвращает
selfindexBy() public
indexBy(callable|string $path): self
Учитывая список и функцию обратного вызова, которая возвращает ключ для каждого элемента в списке (или имя свойства), возвращает объект с индексом каждого элемента. Так же, как groupBy, но для случаев, когда вы знаете, что ваши ключи уникальны.
Когда $callback является строкой, это должно быть имя свойства для извлечения или путь, разделённый точками, к свойствам, которые должны быть пройдены, чтобы получить последнее в пути.
Пример:
$items = [
['id' => 1, 'name' => 'foo'],
['id' => 2, 'name' => 'bar'],
['id' => 3, 'name' => 'baz'],
];
$indexed = (new Collection($items))->indexBy('id');
// Or
$indexed = (new Collection($items))->indexBy(function ($e) {
return $e['id'];
});
// Result will look like this when converted to array
[
1 => ['id' => 1, 'name' => 'foo'],
3 => ['id' => 3, 'name' => 'baz'],
2 => ['id' => 2, 'name' => 'bar'],
]; Параметры
-
callable|string$path
Возвращает
selfinsert() public
insert(string $path, mixed $values): self
Возвращает новую коллекцию, содержащую каждый из элементов, найденных в $values, как свойство внутри соответствующих элементов в этой коллекции. Свойство, куда будут вставлены значения, описывается параметром $path.
$path может быть строкой с именем свойства или путем, разделённым точками, к свойствам, которые должны быть пройдены, чтобы получить последнее в пути.
Если столбец или свойство не могут быть найдены для определённого элемента в коллекции как часть пути, элемент останется без изменений.
Пример:
Вставить возраст в коллекцию, содержащую пользователей:
$items = [
['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']],
['comment' => ['body' => 'awesome', 'user' => ['name' => 'Renan']]
];
$ages = [25, 28];
$inserted = (new Collection($items))->insert('comment.user.age', $ages);
// Result will look like this when converted to array
[
['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark', 'age' => 25]],
['comment' => ['body' => 'awesome', 'user' => ['name' => 'Renan', 'age' => 28]]
]; Параметры
-
string$path -
mixed$values
Возвращает
selfisEmpty() public
isEmpty(): bool
Возвращает, есть ли элементы в этой коллекции
Пример:
$items [1, 2, 3]; (new Collection($items))->isEmpty(); // false
(new Collection([]))->isEmpty(); // true
Возвращает
booljsonSerialize() public
jsonSerialize(): array
Возвращает данные, которые могут быть преобразованы в JSON. Возвращает те же данные, что и toArray(), которые содержат только уникальные ключи.
Часть интерфейса JsonSerializable.
Возвращает
arraykey() public
key(): int
Возвращает ключ текущей записи в итераторе
Часть интерфейса Iterator.
Возвращает
intlast() public
last(): mixed
Возвращает последний результат в этом наборе
Возвращает
mixedlazy() public
lazy(): self
Возвращает новый набор, где все операции, присоединённые после него, гарантированно будут выполняться лениво. То есть, элементы будут возвращаться по одному.
Ленивый набор может быть итерирован только один раз. Вторая попытка приводит к ошибке.
Возвращает
selflistNested() public
listNested(string|int $order = 'desc', callable|string $nestingKey = 'children'): self
Возвращает новый набор с каждым элементом этого набора после выравнивания древовидной структуры. Древовидная структура определяется вложением элементов под ключом с известным именем. Такое имя можно указать, используя параметр '$nestingKey'.
По умолчанию возвращаются все элементы в дереве, следуя поиску в глубину (Depth First Search), то есть элементы от родительского элемента к листьям каждого ветвления.
Возвратить все элементы сверху вниз можно с помощью поиска в ширину (Breadth First Search), передав параметр '$dir' со значением 'asc'. То есть, это вернёт все элементы для той же глубины дерева, но сверху вниз.
Наконец, можно указать, чтобы получить только набор с узлами-листьями в древовидной структуре. Для этого передайте 'leaves' в первом аргументе.
Возможные значения для первого аргумента являются псевдонимами для следующих констант, и вместо псевдонима можно использовать сами константы:
- desc: RecursiveIteratorIterator::SELF_FIRST
- asc: RecursiveIteratorIterator::CHILD_FIRST
- leaves: RecursiveIteratorIterator::LEAVES_ONLY
Пример:
$collection = new Collection([
['id' => 1, 'children' => [['id' => 2, 'children' => [['id' => 3]]]]],
['id' => 4, 'children' => [['id' => 5]]]
]);
$flattenedIds = $collection->listNested()->extract('id'); // Yields [1, 2, 3, 4, 5] Параметры
-
string|int$order необязательно -
callable|string$nestingKey необязательно
Возвращает
selfmap() public
map(callable $callback): self
Возвращает другой набор после модификации каждого из значений в этом наборе с помощью предоставленной вызываемой функции.
Каждый раз при выполнении обратного вызова он получит значение элемента в текущей итерации, ключ элемента и этот набор в качестве аргументов в указанном порядке.
Пример:
Получение набора булевых значений, где true указывает на то, что человек женщина:
$collection = (new Collection($people))->map(function ($person, $key) {
return $person->gender === 'female';
}); Параметры
-
callable$callback
Возвращает
selfmatch() public
match(array $conditions): self
Просматривает каждое значение в списке, возвращая набор всех значений, содержащих все пары ключ-значение, перечисленные в $conditions.
Пример:
$items = [ ['comment' => ['body' => 'cool', 'user' => ['name' => 'Mark']], ['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']] ]; $extracted = (new Collection($items))->match(['user.name' => 'Renan']); // Result will look like this when converted to array [ ['comment' => ['body' => 'very cool', 'user' => ['name' => 'Renan']] ]
Параметры
-
array$conditions
Возвращает
selfmax() public
max(callable|string $path, int $sort = \SORT_NUMERIC): mixed
Возвращает верхний элемент в этом наборе после сортировки по свойству. См. метод sortBy для получения информации о обратном вызове и параметре $sort.
Примеры:
// For a collection of employees
$max = $collection->max('age');
$max = $collection->max('user.salary');
$max = $collection->max(function ($e) {
return $e->get('user')->get('salary');
});
// Display employee name
echo $max->name; Параметры
-
callable|string$path -
int$sort необязательно
Возвращает
mixedmedian() public
median(callable|string|null $path = null): float|int|null
Возвращает медиану всех значений, извлечённых с помощью $path или из этого набора.
Пример:
$items = [
['invoice' => ['total' => 400]],
['invoice' => ['total' => 500]]
['invoice' => ['total' => 100]]
['invoice' => ['total' => 333]]
['invoice' => ['total' => 200]]
];
$total = (new Collection($items))->median('invoice.total');
// Total: 333
$total = (new Collection([1, 2, 3, 4]))->median();
// Total: 2.5 Медиана пустого набора или 0 строк равна null. Наборы с null значениями не считаются пустыми.
Параметры
-
callable|string|null$path необязательно
Возвращает
float|int|nullmin() public
min(callable|string $path, int $sort = \SORT_NUMERIC): mixed
Возвращает нижний элемент в этом наборе после сортировки по свойству. См. метод sortBy для получения информации о обратном вызове и параметре $sort.
Примеры:
// For a collection of employees
$min = $collection->min('age');
$min = $collection->min('user.salary');
$min = $collection->min(function ($e) {
return $e->get('user')->get('salary');
});
// Display employee name
echo $min->name; Параметры
-
callable|string$path -
int$sort необязательно
Возвращает
mixednest() public
nest(callable|string $idPath, callable|string $parentPath, string $nestingKey = 'children'): self
Возвращает новый набор, где значения вложены в древовидную структуру на основе пути к свойству id и пути к свойству родительского id.
Параметры
-
callable|string$idPath -
callable|string$parentPath -
string$nestingKey необязательно
Возвращает
selfnewCollection() protected
newCollection(mixed ...$args): Cake\Collection\CollectionInterface
Возвращает новый набор.
Позволяет классам, использующим этот трейт, определять собственный тип возвращаемого интерфейса набора.
Параметры
-
mixed...$args Аргументы конструктора.
Возвращает
Cake\Collection\CollectionInterfacenext() public
next(): void
Перемещает указатель итератора к следующей записи
Часть интерфейса Iterator.
Возвращает
voidoptimizeUnwrap() protected
optimizeUnwrap(): iterable
Распаковывает этот итератор и возвращает самый простой обход, который может быть использован для получения данных
Возвращает
iterableprepend() public
prepend(mixed $items): self
Добавляет набор элементов в начало набора, создавая новый набор
Параметры
-
mixed$items
Возвращает
selfprependItem() public
prependItem(mixed $item, mixed $key = null): self
Добавляет один элемент в начало, создавая новый набор.
Параметры
-
mixed$item -
mixed$key необязательно
Возвращает
selfreduce() public
reduce(callable $callback, mixed $initial = null): mixed
Сворачивает значения в этом наборе в одно значение, как результат применения функции обратного вызова ко всем элементам. $zero - начальное состояние свертки, и каждый последующий шаг должен возвращаться функцией обратного вызова. Если $zero опущен, первое значение набора будет использоваться вместо него, и свертка начнется со второго элемента.
Параметры
-
callable$callback -
mixed$initial необязательно
Возвращает
mixedreject() public
reject(callable $callback): self
Просматривает каждое значение в наборе и возвращает другой набор со всеми значениями, которые не проходят проверку истинности. Это противоположно filter.
При каждом выполнении обратного вызова он получит значение элемента в текущей итерации, ключ элемента и этот набор в качестве аргументов в указанном порядке.
Пример:
Фильтрация чётных чисел в массиве, в результате в конечном наборе будут только значения 1 и 3:
$collection = (new Collection([1, 2, 3]))->reject(function ($value, $key) {
return $value % 2 === 0;
}); Параметры
-
callable$callback
Возвращает
selfrewind() public
rewind(): void
Перематывает результат.
Часть интерфейса Iterator.
Возвращает
voidИсключения
Cake\Database\Exception\DatabaseExceptionsample() public
sample(int $length = 10): self
Возвращает новую коллекцию с максимальным количеством $size случайных элементов из этой коллекции
Параметры
-
int$length необязательный
Возвращает
selfserialize() public
serialize(): string
Сериализует результат набора данных.
Часть интерфейса Serializable.
Возвращает
stringshuffle() public
shuffle(): self
Возвращает новую коллекцию с элементами в случайном порядке. Эта функция не сохраняет исходные ключи в коллекции.
Возвращает
selfskip() public
skip(int $length): self
Возвращает новую коллекцию, которая будет пропускать указанное количество элементов в начале итерации.
Параметры
-
int$length
Возвращает
selfsome() public
some(callable $callback): bool
Возвращает true, если хотя бы одно из значений в этой коллекции проходит проверку, заданную в обратном вызове.
Обратный вызов получает значение и ключ проверяемого элемента и должен вернуть true, если проверка пройдена.
Пример:
$hasYoungPeople = (new Collection([24, 45, 15]))->some(function ($value, $key) {
return $value < 21;
}); Параметры
-
callable$callback
Возвращает
boolsortBy() public
sortBy(callable|string $path, int $order = \SORT_DESC, int $sort = \SORT_NUMERIC): self
Возвращает отсортированный итератор элементов в этой коллекции, ранжированных в порядке возрастания по результатам выполнения каждого значения через обратный вызов. $callback также может быть строкой, представляющей имя столбца или свойства.
Обратный вызов получит в качестве первого аргумента каждый элемент в $items, возвращенное значение обратного вызова будет использовано в качестве значения для сортировки элемента. Обратите внимание, что функция обратного вызова может быть вызвана более одного раза для каждого элемента.
Пример:
$items = $collection->sortBy(function ($user) {
return $user->age;
});
// alternatively
$items = $collection->sortBy('age');
// or use a property path
$items = $collection->sortBy('department.name');
// output all user name order by their age in descending order
foreach ($items as $user) {
echo $user->name;
} Параметры
-
callable|string$path -
int$order необязательный -
int$sort необязательный
Возвращает
selfstopWhen() public
stopWhen(callable|array $condition): self
Создает новую коллекцию, которая при итерации прекратит выдачу результатов, если предоставленное условие принимает значение true.
Это удобно для работы с бесконечными итераторами или любым генератором, который может начать возвращать недопустимые элементы в определенный момент. Например, при чтении строк из потока файла вы можете остановить итерацию после достижения определенного значения.
Пример:
Получение массива строк в файле CSV до тех пор, пока столбец с отметкой времени не станет меньше определенной даты
$lines = (new Collection($fileLines))->stopWhen(function ($value, $key) {
return (new DateTime($value))->format('Y') < 2012;
})
->toArray(); Получение элементов до тех пор, пока не будет найден первый элемент без утверждения:
$comments = (new Collection($comments))->stopWhen(['is_approved' => false]);
Параметры
-
callable|array$condition
Возвращает
selfsumOf() public
sumOf(callable|string|null $path = null): float|int
Возвращает общую сумму всех значений, извлеченных с помощью $matcher, или этой коллекции.
Пример:
$items = [
['invoice' => ['total' => 100]],
['invoice' => ['total' => 200]]
];
$total = (new Collection($items))->sumOf('invoice.total');
// Total: 300
$total = (new Collection([1, 2, 3]))->sumOf();
// Total: 6 Параметры
-
callable|string|null$path необязательный
Возвращает
float|inttake() public
take(int $length = 1, int $offset = 0): self
Возвращает новую коллекцию с максимальным количеством $size элементов в порядке, в котором эта коллекция была создана. Если указан второй параметр, он определит, с какой позиции начинать извлечение элементов.
Параметры
-
int$length необязательный -
int$offset необязательный
Возвращает
selftakeLast() public
takeLast(int $length): self
Возвращает последние N элементов коллекции
Пример:
$items = [1, 2, 3, 4, 5]; $last = (new Collection($items))->takeLast(3); // Result will look like this when converted to array [3, 4, 5];
Параметры
-
int$length
Возвращает
selfthrough() public
through(callable $callback): self
Пропускает эту коллекцию через вызываемый объект в качестве первого аргумента. Это полезно для декорирования всей коллекции другим объектом.
Пример:
$items = [1, 2, 3];
$decorated = (new Collection($items))->through(function ($collection) {
return new MyCustomCollection($collection);
}); Параметры
-
callable$callback
Возвращает
selftoArray() public
toArray(bool $keepKeys = true): array
Возвращает массив, представляющий результаты
Параметры
-
bool$keepKeys необязательный
Возвращает
arraytoList() public
toList(): array
Возвращает массив с числовыми индексами, представляющий результаты. Это эквивалентно вызову toArray(false)
Возвращает
arraytranspose() public
transpose(): Cake\Collection\CollectionInterface
Транспонировать строки и столбцы в столбцы и строки
Пример:
$items = [
['Products', '2012', '2013', '2014'],
['Product A', '200', '100', '50'],
['Product B', '300', '200', '100'],
['Product C', '400', '300', '200'],
]
$transpose = (new Collection($items))->transpose()->toList();
// Returns
// [
// ['Products', 'Product A', 'Product B', 'Product C'],
// ['2012', '200', '300', '400'],
// ['2013', '100', '200', '300'],
// ['2014', '50', '100', '200'],
// ] Возвращает
Cake\Collection\CollectionInterfaceИсключения
LogicExceptionunfold() public
unfold(callable|null $callback = null): self
Создает новую коллекцию, где элементы являются конкатенацией списков элементов, сгенерированных функцией трансформатора, примененной к каждому элементу в исходной коллекции.
Функция трансформатора получит значение и ключ для каждого элемента в коллекции в указанном порядке, и она должна вернуть массив или объект Traversable, который можно конкатенировать с конечным результатом.
Если функция трансформатора не передана, будет использоваться функция «тождества». Это полезно, когда каждый элемент в исходной коллекции представляет собой список элементов, которые нужно добавить один за другим.
Пример:
$items [[1, 2, 3], [4, 5]]; $unfold = (new Collection($items))->unfold(); // Returns [1, 2, 3, 4, 5]
Использование трансформатора
$items [1, 2, 3];
$allItems = (new Collection($items))->unfold(function ($page) {
return $service->fetchPage($page)->toArray();
}); Параметры
-
callable|null$callback необязательный
Возвращает
selfunserialize() public
unserialize(string $serialized): void
Десериализует результат набора данных.
Часть интерфейса Serializable.
Параметры
-
string$serialized Сериализованный объект
Возвращает
voidunwrap() public
unwrap(): Traversable
Возвращает ближайший вложенный итератор, который можно безопасно проходить, не теряя возможных преобразований. Это используется в основном для удаления пустых обёрток IteratorIterator, которые могут только замедлить процесс итерации.
Возвращает
Traversablevalid() public
valid(): bool
Существуют ли еще результаты, ожидающие извлечения из итератора
Часть интерфейса Iterator.
Возвращает
boolzip() public
zip(iterable $items): self
Объединяет элементы этой коллекции с каждым из элементов переданных итерабельных объектов, используя их позиционный индекс в качестве ссылки.
Пример:
$collection = new Collection([1, 2]); $collection->zip([3, 4], [5, 6])->toList(); // returns [[1, 3, 5], [2, 4, 6]]
Параметры
-
iterable$items
Возвращает
selfzipWith() public
zipWith(iterable $items, callable $callback): self
Объединяет элементы этого набора с каждым из элементов переданных итерируемых объектов, используя их позиционный индекс в качестве ссылки.
Результирующий элемент будет результатом выполнения функции $callable.
Пример:
$collection = new Collection([1, 2]);
$zipped = $collection->zipWith([3, 4], [5, 6], function (...$args) {
return array_sum($args);
});
$zipped->toList(); // returns [9, 12]; [(1 + 3 + 5), (2 + 4 + 6)] Параметры
-
iterable$items -
callable$callback
Возвращает
selfПодробности свойств
$_autoFields protected
Отслеживает значение свойства $_autoFields объекта $query, переданного в конструктор.
Тип
bool|null$_containMap protected
Список ассоциаций, которые должны быть загружены с нетерпением.
Тип
array$_count protected
Содержит количество записей в этом наборе результатов.
Тип
int$_current protected
Последняя извлеченная запись из оператора.
Тип
object|array$_defaultAlias protected
По умолчанию псевдоним таблицы.
Тип
string$_defaultTable protected
Экземпляр таблицы по умолчанию.
Тип
Cake\ORM\Table$_driver protected
Объект драйвера базы данных.
Кэшируется в свойстве для избежания многократных вызовов одной и той же функции.
Тип
Cake\Database\DriverInterface$_entityClass protected
Полное пространство имён класса, используемого для гидратации результатов.
Тип
string$_hydrate protected
Нужно ли гидратировать результаты в объекты?
Тип
bool$_index protected
Указывает на следующий номер записи, который нужно извлечь.
Тип
int$_map protected
Карта полей, извлеченных из оператора с их типом и таблицей, к которой они относятся.
Тип
array<string, mixed>$_matchingMap protected
Список ассоциаций, которые должны быть помещены под результатом _matchingData.
Тип
array<string, mixed>$_matchingMapColumns protected
Список сопоставленных ассоциаций и ключей столбцов, которые ожидать от каждой из них.
Тип
array<string, mixed>$_results protected
Результаты, которые были извлечены или гидратированы в результаты.
Тип
SplFixedArray|array$_statement protected
Оператор базы данных, содержащий результаты.
Тип
Cake\Database\StatementInterface$_useBuffering protected
Буферизовать ли результаты, извлеченные из оператора?
Тип
bool
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.4/class-Cake.ORM.ResultSet.html