Класс ResultSet
Представляет результаты, полученные после выполнения запроса для определённой таблицы. Этот объект отвечает за правильное вложенность ключей результатов, полученных из запроса, приведение каждого поля к соответствующему типу и выполнение дополнительных запросов, необходимых для ленивой загрузки внешних ассоциаций.
Краткое описание свойств
- $_autoFields protected
bool|nullОтслеживает значение свойства $_autoFields объекта $query, переданного в конструктор.
- $_containMap protected
arrayСписок ассоциаций, которые должны быть загружены с помощью ленивой загрузки.
- $_count protected
intСодержит количество записей в этом наборе результатов.
- $_current protected
array|objectПоследняя полученная запись из запроса.
- $_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Карта полей, которые получены из запроса, с указанием их типа и таблицы, к которой они относятся.
- $_matchingMap protected
arrayСписок ассоциаций, которые должны быть размещены под ключом
_matchingDataрезультата. - $_matchingMapColumns protected
arrayСписок соответсвующих ассоциаций и ключей столбцов, ожидаемых от каждой из них.
- $_results protected
arraySplFixedArrayРезультаты, которые были получены или гидратированы в результаты.
- $_statement protected
Cake\Database\StatementInterfaceЗапрос базы данных, содержащий результаты.
- $_useBuffering protected
boolБуферизовать ли полученные результаты из запроса.
Краткое описание методов
-
__construct() public
Конструктор
-
__debugInfo() 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
Возвращает значение true, если в этом списке нет элементов.
-
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
Перематывает результат набора.
-
sample() public
Возвращает новую коллекцию с максимальным количеством $size случайных элементов из этой коллекции.
-
serialize() public
Сериализует результат набора.
-
shuffle() public
Возвращает новую коллекцию с элементами в случайном порядке. Эта функция не сохраняет исходные ключи в коллекции.
-
skip() public
Возвращает новую коллекцию, которая будет пропускать указанное количество элементов в начале итерации.
-
some() public
Возвращает true, если хотя бы одно из значений в этой коллекции проходит проверку на истинность, заданную в обратном вызове.
-
sortBy() public
Возвращает отсортированный итератор элементов в этой коллекции, ранжированных в порядке возрастания по результатам прохождения каждого значения через обратный вызов. $callback также может быть строкой, представляющей имя столбца или свойства.
-
stopWhen() public
Создаёт новую коллекцию, которая при итерации прекратит выдавать результаты, если предоставленное условие примет значение true.
-
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
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращает
array_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(arrayArrayAccess $data, string[] $parts): mixed
Возвращает столбец из $data, который можно извлечь, перебирая имена столбцов, содержащихся в $path. Вернёт массивы для элементов, представленных с {*}
Параметры
-
arrayArrayAccess$data Данные.
-
string[]$parts Путь для извлечения.
Возвращает
mixed_fetchResult() protected
_fetchResult(): mixed
Вспомогательная функция для извлечения следующего результата из запроса или заданных результатов.
Возвращает
mixed_groupResult() protected
_groupResult(array $row): arrayCake\Datasource\EntityInterface
Правильно вложенные ключи результатов, включая те, которые поступают от ассоциаций.
Параметры
-
array$row Массив, содержащий столбцы и значения, или ложь, если результатов нет.
Возвращает
arrayCake\Datasource\EntityInterface_propertyExtractor() protected
_propertyExtractor(string|callable $path): callable
Возвращает вызываемый объект, который можно использовать для извлечения свойства или столбца из массива или объекта на основе пути, разделённого точкой.
Параметры
-
string|callable$path Путь к столбцу, разделённый точкой, для получения конечного результата или вызываемый объект, который позаботится об этом.
Возвращает
callable_simpleExtract() protected
_simpleExtract(arrayArrayAccess $data, string[] $parts): mixed
Возвращает столбец из $data, который можно извлечь, перебирая имена столбцов, содержащихся в $path.
Параметры
-
arrayArrayAccess$data Данные.
-
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(string|callable|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 значениями не считаются пустыми.
Параметры
-
string|callable|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 $preserveKeys = 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$preserveKeys 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 $preserveKeys = 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$preserveKeys необязательно
Возвращает
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(): array|object
Возвращает текущую запись в итераторе результатов
Часть интерфейса Iterator.
Возвращает
array|objecteach() 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, если все значения в этом наборе проходят проверку истинности, заданную в обратном вызове.
Каждый раз при выполнении обратного вызова он получает значение элемента в текущей итерации и ключ элемента в качестве аргументов в указанном порядке.
Пример:
$overTwentyOne = (new Collection([24, 45, 60, 15]))->every(function ($value, $key) {
return $value > 21;
}); Пустые наборы всегда возвращают true, так как это пустая истина.
Параметры
-
callable$callback
Возвращает
boolextract() public
extract(string|callable $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] Параметры
-
string|callable$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 необязательно
Возвращает
selffirst() public
first(): array|object|null
Получить первую запись из набора результатов.
Этот метод также закроет курсор подлежащего запроса.
Возвращает
array|object|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', string|callable $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 необязательно -
string|callable$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(string|callable|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 значениями не считаются пустыми.
Параметры
-
string|callable|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
Перематывает ResultSet.
Часть интерфейса 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, если какие-либо значения в этой коллекции проходят проверку, заданную в обратном вызове.
Каждый раз при выполнении обратного вызова он будет получать значение элемента в текущей итерации и ключ элемента в качестве аргументов в указанном порядке.
Пример:
$hasYoungPeople = (new Collection([24, 45, 15]))->every(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
Создаёт новую коллекцию, которая при итерации прекратит выдачу результатов, если предоставленное условие оценивается как истинное.
Это полезно для работы с бесконечными итераторами или любым генератором, который может начать возвращать недопустимые элементы в определенный момент. Например, при чтении строк из потока файла вы можете остановить итерацию после достижения определенного значения.
Пример:
Получить массив строк в файле 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(string|callable|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 Параметры
-
string|callable|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 $preserveKeys = true): array
Возвращает массив, представляющий результаты
Параметры
-
bool$preserveKeys необязательно
Возвращает
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
Последняя запрос извлечения записи из набора.
Тип
array|object$_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$_matchingMap protected
Список ассоциаций, которые должны быть помещены под результатом _matchingData ключа.
Тип
array$_matchingMapColumns protected
Список сопоставляемых ассоциаций и ключей столбцов, которые ожидают от каждого из них.
Тип
array$_results protected
Результаты, которые были извлечены или гидратированы в результаты.
Тип
arraySplFixedArray$_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.2/class-Cake.ORM.ResultSet.html