Spec-Zone.ru › CakePHP 3.2

Класс Query

Расширяет базовый класс Query, предоставляя новые методы, связанные с загрузкой ассоциаций, автоматическим выбором полей, автоматическим приведением типов и обертыванием результатов в определённый итератор, который будет отвечать за гидратацию результатов при необходимости.

Cake\Database\Query implements Cake\Database\ExpressionInterface, IteratorAggregate uses Cake\Database\TypeMapTrait
Extended by Cake\ORM\Query implements JsonSerializable, Cake\Datasource\QueryInterface uses Cake\Datasource\QueryTrait
Пространство имён: Cake\ORM
См.: \Cake\Collection\CollectionInterface Для полного описания методов коллекции, поддерживаемых этим классом
Расположение: ORM/Query.php

Краткое описание констант

  • integer

    APPEND
    0
  • boolean

    OVERWRITE
    true
  • integer

    PREPEND
    1

Краткое описание свойств

  • $_autoFields protected
    boolean

    Отслеживает, должно ли исходное запроса включать поля из таблицы верхнего уровня.

  • $_beforeFindFired protected
    boolean
    True, если событие beforeFind уже было выполнено для этого запроса.
  • $_counter protected
    callable

    Функция обратного вызова, которая может использоваться для расчёта общего количества записей, которые этот запрос будет соответствовать, когда не используется limit

  • $_eagerLoader protected
    Cake\ORM\EagerLoader

    Экземпляр класса, ответственного за хранение содержаний ассоциаций и их загрузку с помощью eager loading, когда этот запрос выполняется.

  • $_hasFields protected
    boolean

    Выбраны ли пользователем какие-либо поля перед выполнением. Это используется для определения, должны ли быть автоматически выбраны какие-либо поля.

  • $_hydrate protected
    boolean
    Нужно ли гидратировать результаты в объекты сущностей.
  • $_resultsCount protected
    integer
    Значение COUNT(*) для запроса.

Унаследованные свойства

  • _connection, _dirty, _functionsBuilder, _iterator, _parts, _resultDecorators, _selectTypeMap, _type, _typeCastAttached, _useBufferedResults, _valueBinder _typeMap _cache, _eagerLoaded, _formatters, _mapReduce, _options, _repository, _results

Краткое описание методов

  • __call() public
  • __clone() public
    Обработчик клонирования объекта.
  • __construct() public
    Конструктор
  • __debugInfo() public

    Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.

  • _addAssociationsToTypeMap() protected

    Используется для рекурсивного добавления типов столбцов связанных ассоциаций в запрос.

  • _addDefaultFields() protected

    Проверяет, есть ли заданные поля для выбора, в противном случае добавляет все поля для таблицы по умолчанию.

  • _addDefaultSelectTypes() protected
    Устанавливает типы по умолчанию для преобразования полей в запросе SELECT
  • _decorateResults() protected
    Декорирует итератор результатов с помощью операций MapReduce и форматирования
  • _dirty() protected

    Помечает запрос как измененный, удаляя любую предварительно обработанную информацию из кэширования в памяти, например предыдущие результаты

  • _execute() protected

    Выполняет этот запрос и возвращает объект ResultSet, содержащий результаты. Также устанавливает правильный класс оператора для ленивой загрузки глубоких ассоциаций.

  • _performCount() protected
    Выполняет и возвращает COUNT(*) для запроса.
  • _transformQuery() protected
    Применяет некоторые значения по умолчанию к объекту запроса перед его выполнением.
  • addDefaultTypes() public

    Подсказывает этому объекту ассоциировать правильные типы при приведении условий для базы данных. Это делается путем извлечения типов полей из схемы, связанной с переданным объектом таблицы. Это предотвращает повторение пользователя при указании условий.

  • all() public
    Получить результаты для этого запроса.
  • applyOptions() public

    Заполняет или добавляет части текущих пунктов запроса, используя массив. Это удобно для передачи всех пунктов запроса сразу. Массив параметров может содержать:

  • autoFields() public
    Устанавливает/получает, добавляет ли ORM автоматически поля.
  • cache() public
  • cleanCopy() public
    Создает копию текущего запроса, вызывает события beforeFind и сбрасывает некоторые состояния.
  • contain() public

    Устанавливает список ассоциаций, которые должны быть загружены вместе с этим запросом. Список связанных таблиц должен быть предварительно настроен как ассоциации с помощью API таблиц.

  • count() public
    Возвращает общее количество результатов для запроса.
  • counter() public

    Регистрирует вызываемую функцию, которая будет выполнена при вызове метода count в этом запросе. Возвращаемое значение функции будет установлено как возвращаемое значение метода count.

  • delete() public
    Создать запрос на удаление.
  • eagerLoader() public

    Устанавливает экземпляр класса загрузчика ленивых ассоциаций для загрузки ассоциаций и хранения содержаний. Если вызов без аргументов, возвращает текущий настроенный экземпляр.

  • find() public
    Применить пользовательские методы поиска к существующему объекту запроса.
  • hydrate() public
    Включить/выключить гидратацию сущностей.
  • innerJoinWith() public

    Создает INNER JOIN с переданной таблицей ассоциации, сохраняя соответствие внешнего ключа и пользовательские условия, которые были первоначально заданы для него.

  • insert() public
    Создать запрос на вставку.
  • jsonSerialize() public
    Выполнить запрос и преобразовать результат в JSON.
  • leftJoinWith() public

    Создаёт LEFT JOIN с переданной таблицей ассоциаций, сохраняя соответствие внешнего ключа и пользовательские условия, которые были первоначально заданы для неё.

  • matching() public

    Добавляет условия фильтрации к этому запросу, чтобы отобразить только строки, которые имеют отношение к другой из связанной таблицы, основанные на условиях в связанной таблице.

  • notMatching() public

    Добавляет условия фильтрации к этому запросу, чтобы отобразить только строки, которые не имеют соответствия другой из связанной таблицы, основанные на условиях в связанной таблице.

  • select() public

    Добавляет новые поля, которые должны быть возвращены оператором SELECT при выполнении этого запроса. Поля могут быть переданы как массив строк, массив объектов выражений, одно выражение или одна строка.

  • sql() public
    Возвращает SQL-представление этого объекта.
  • triggerBeforeFind() public
    Вызывает событие beforeFind для объекта репозитория запроса.
  • update() public
    Создать запрос на обновление.

Подробное описание методов

__call()source public

__call( $method , $arguments )

Исключения

BadMethodCallException
если метод вызывается для запроса, который не является запросом на выборку

__clone()source public

__clone( )

Обработчик клонирования объекта.

Удаляет внутренний итератор клонированных элементов, клонирует экземпляры значения связующего звена и загрузчика ленивых ассоциаций.

Переопределяет

Cake\Database\Query::__clone()

__construct()source public

__construct( Cake\Database\Connection $connection , Cake\ORM\Table $table )

Конструктор

Параметры

Cake\Database\Connection $connection
Объект подключения
Cake\ORM\Table $table
Таблица, на которой начинается запрос

Переопределяет

Cake\Database\Query::__construct()

__debugInfo()source public

__debugInfo( )

Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.

Возвращает

массив

Переопределяет

Cake\Database\Query::__debugInfo()

_addAssociationsToTypeMap()source protected

_addAssociationsToTypeMap( Cake\ORM\Table $table , Cake\Database\TypeMap $typeMap , array $associations )

Используется для рекурсивного добавления типов столбцов связанных ассоциаций в запрос.

Параметры

Cake\ORM\Table $table
Экземпляр таблицы для извлечения ассоциаций.
Cake\Database\TypeMap $typeMap

Карта типов для проверки столбцов. Эта карта типов косвенно изменяется через Cake\ORM\Query::addDefaultTypes()

массив $associations
Вложенное дерево ассоциаций для обхода.

_addDefaultFields()source protected

_addDefaultFields( )

Проверяет, есть ли заданные поля для выбора, в противном случае добавляет все поля для таблицы по умолчанию.

_addDefaultSelectTypes()source protected

_addDefaultSelectTypes( )

Устанавливает типы по умолчанию для преобразования полей в запросе SELECT

_decorateResults()source protected

_decorateResults( Traversable $result )

Декорирует итератор результатов с помощью функций MapReduce и форматирования

Параметры

Traversable $result
Исходные результаты

Возвращает

Cake\Datasource\ResultSetInterface

_dirty()source protected

_dirty( )

Помечает запрос как изменённый, удаляя любую предварительно обработанную информацию из кеширования в памяти, такую как предыдущие результаты

Переопределяет

Cake\Database\Query::_dirty()

_execute()source protected

_execute( )

Выполняет данный запрос и возвращает объект ResultSet, содержащий результаты. Это также настроит правильный класс утверждения для ленивой загрузки глубоких ассоциаций.

Возвращает

Cake\ORM\ResultSet

_performCount()source protected

_performCount( )

Выполняет и возвращает COUNT(*) для запроса.

Возвращает

целое число

_transformQuery()source protected

_transformQuery( )

Применяет некоторые значения по умолчанию к объекту запроса перед его выполнением.

В частности, добавляет предложение FROM, добавляет поля таблицы по умолчанию, если они не указаны, и применяет соединения, необходимые для ленивой загрузки ассоциаций, определенных с помощью contain

Также устанавливает типы по умолчанию для столбцов в предложении SELECT

См. также

\Cake\Database\Query::execute()

addDefaultTypes()source public

addDefaultTypes( Cake\ORM\Table $table )

Указывает этому объекту ассоциировать правильные типы при преобразовании условий для базы данных. Это делается путем извлечения типов полей из схемы, связанной с переданным объектом таблицы. Это предотвращает повторение пользователя при указании условий.

Этот метод возвращает тот же объект запроса для цепочки.

Параметры

Cake\ORM\Table $table
Таблица для извлечения типов

Возвращает


$this

all()source public

all( )

Получить результаты для этого запроса.

Возвращает

Cake\Datasource\ResultSetInterface

Исключение

RuntimeException
если этот метод вызывается для не-SELECT запроса.

Реализация

Cake\Datasource\QueryInterface::all()

applyOptions()source public

applyOptions( array $options )

Заполняет или добавляет части текущих пунктов запроса с помощью массива. Это удобно для передачи всех пунктов запроса сразу. Массив опций принимает:

Заполняет или добавляет части текущих пунктов запроса с помощью массива. Это удобно для передачи всех пунктов запроса сразу. Массив опций принимает:

  • fields: Соответствует методу select
  • conditions: Соответствует методу where
  • limit: Соответствует методу limit
  • order: Соответствует методу order
  • offset: Соответствует методу offset
  • group: Соответствует методу group
  • having: Соответствует методу having
  • contain: Соответствует опциям contain для ленивой загрузки
  • join: Соответствует методу join
  • page: Соответствует методу page

Пример:

$query->applyOptions([
  'fields' => ['id', 'name'],
  'conditions' => [
    'created >=' => '2013-01-01'
  ],
  'limit' => 10
]);

Эквивалентно:

$query
  ->select(['id', 'name'])
  ->where(['created >=' => '2013-01-01'])
  ->limit(10)

Параметры

массив $options
список пунктов запроса, к которым будут добавляться новые части.

Возвращает


$this

Реализация

Cake\Datasource\QueryInterface::applyOptions()

autoFields()source public

autoFields( boolean|null $value null )

Устанавливает, следует ли ORM автоматически добавлять поля.

По умолчанию вызов select() отключит авто-поля. Вы можете снова включить авто-поля с помощью этого метода.

Параметры

boolean|null $value необязательно null
Значение для установки или null для чтения текущего значения.

Возвращает

boolean|Cake\ORM\Query
$this Либо текущее значение, либо объект запроса.

cache()source public

cache( $key , $config 'default' )

Возвращает


$this

Исключение

RuntimeException
При попытке кешировать не-SELECT запрос.

cleanCopy()source public

cleanCopy( )

Создаёт копию текущего запроса, запускает beforeFind и сбрасывает некоторые состояния.

Следующее состояние будет очищено:

  • autoFields
  • limit
  • offset
  • функции map/reduce
  • форматеры результатов
  • order
  • содержания

Этот метод создаёт копии запросов, которые полезны при работе с подзапросами.

Возвращает

Cake\ORM\Query

contain()source public

contain( array|string|null $associations null , boolean $override false )

Устанавливает список ассоциаций, которые должны быть загружены вместе с этим запросом. Список связанных таблиц должен быть предварительно настроен как ассоциации с помощью API таблиц.

Пример:

// Bring articles' author information
$query->contain('Author');

// Also bring the category and tags associated to each article
$query->contain(['Category', 'Tag']);

Ассоциации могут быть произвольно вложены с помощью точечной нотации или вложенных массивов, это позволяет этому объекту вычислять соединения или любые дополнительные запросы, которые необходимо выполнить, чтобы получить требуемые связанные данные.

Пример:

// Eager load the product info, and for each product load other 2 associations
$query->contain(['Product' => ['Manufacturer', 'Distributor']);

// Which is equivalent to calling
$query->contain(['Products.Manufactures', 'Products.Distributors']);

// For an author query, load his region, state and country
$query->contain('Regions.States.Countries');

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

Пример:

$query->contain(['Tags' => function ($q) {
    return $q->where(['Tags.is_popular' => true]);
}]);

$query->contain(['Products.Manufactures' => function ($q) {
    return $q->select(['name'])->where(['Manufactures.active' => true]);
}]);

Каждая ассоциация может определить специальные опции при ленивой загрузке, разрешённые опции, которые могут быть заданы для каждой ассоциации:

  • foreignKey: Используется для установки другого поля для соответствия обеим таблицам, если установлено в false, автоматически не будут генерироваться условия соединения. false может использоваться только для соединяемых ассоциаций и не может использоваться с ассоциациями hasMany или belongsToMany.
  • fields: Массив с полями, которые должны быть извлечены из ассоциации.
  • finder: Найди для использования при загрузке связанных записей. Либо имя найди как строка, либо массив для определения опций для передачи найди.
  • queryBuilder: Эквивалентно передаче вызываемого объекта вместо массива опций.

Пример:

// Set options for the hasMany articles that will be eagerly loaded for an author
$query->contain([
    'Articles' => [
        'fields' => ['title', 'author_id']
    ]
]);

Найди могут быть настроены для использования опций.

// Retrieve translations for the articles, but only those for the `en` and `es` locales
$query->contain([
    'Articles' => [
        'finder' => [
            'translations' => [
                'locales' => ['en', 'es']
            ]
        ]
    ]
]);

При подключении ассоциаций важно включать столбцы внешних ключей. Их отсутствие вызовет исключения.

// Use special join conditions for getting an Articles's belongsTo 'authors'
$query->contain([
    'Authors' => [
        'foreignKey' => false,
        'queryBuilder' => function ($q) {
            return $q->where(...); // Add full filtering conditions
        }
    ]
]);

Если вызвана без аргументов, эта функция вернёт массив со списком ранее настроенных ассоциаций для включения в результат.

Если вызвана с пустым первым аргументом и $override установлено в true, предыдущий список будет очищен.

Параметры

массив|строка|null $associations необязательно null
Список псевдонимов таблиц для запроса.
boolean $override необязательно false

Если переопределить предыдущий список переданным значением, по умолчанию предыдущий список будет объединён с новым.

Возвращает

массив|Cake\ORM\Query
$this

count()source public

count( )

Возвращает общее количество результатов для запроса.

Возвращает COUNT(*) для запроса. Если запрос не был изменён, и подсчёт уже выполнен, возвращается кэшированное значение.

Возвращает

целое число

Реализация

Cake\Datasource\QueryInterface::count()

counter()source public

counter( callable|null $counter )

Регистрирует вызываемый объект, который будет выполнен, когда метод count в этом запросе будет вызван. Значение возврата функции будет установлено в качестве значения возврата метода count.

Это особенно полезно, когда нужно оптимизировать запрос для возврата количества, например, удаляя ненужные соединения, удаляя группировку или просто возвращая приблизительное количество строк.

Обратный вызов получит в качестве первого аргумента копию этого запроса, а не сам запрос.

Если первый параметр имеет значение null, вместо этого будет вызван встроенный счётчик.

Параметры

callable|null $counter
Значение счётчика

Возвращает


$this

delete()source public

delete( string|null $table null )

Создать запрос на удаление.

Изменяет тип запроса на 'delete'. Может быть объединён с методом where() для создания запросов на удаление.

Параметры

string|null $table необязательно null
Неиспользуемый параметр.

Возвращает


$this

Переопределяет

Cake\Database\Query::delete()

eagerLoader()source public

eagerLoader( Cake\ORM\EagerLoader $instance null )

Устанавливает экземпляр класса eager loader для загрузки ассоциаций и хранения содержаний. Если вызывается без аргументов, он возвращает текущий настроенный экземпляр.

Параметры

Cake\ORM\EagerLoader $instance необязательно null

Используемый eager loader. Передайте null, чтобы получить текущий eagerloader.

Возвращает

Cake\ORM\EagerLoader|Cake\ORM\Query
$this

find()source public

find( string $finder , array $options [] )

Применить пользовательские методы поиска к существующему объекту запроса.

Параметры

string $finder
Метод поиска для использования.
array $options необязательно []
Опции для поиска.

Возвращает


$this Возвращает изменённый запрос.

См. также

\Cake\ORM\Table::find()

Реализация

Cake\Datasource\QueryInterface::find()

hydrate()source public

hydrate( boolean|null $enable null )

Включить/выключить гидрацию сущностей.

Если установлено в false, будут возвращены результаты массива.

Параметры

boolean|null $enable необязательно null

Используйте boolean для установки режима гидрации. Null вернёт текущий режим гидрации.

Возвращает

boolean|Cake\ORM\Query
$this Булевое значение при чтении, и $this при установке режима.

innerJoinWith()source public

innerJoinWith( string $assoc , callable $builder null )

Создаёт INNER JOIN с переданной таблицей ассоциации, сохраняя соответствие внешнего ключа и пользовательские условия, первоначально установленные для него.

Эта функция добавит записи в граф contain.

Пример:

// Bring only articles that were tagged with 'cake'
$query->innerJoinWith('Tags', function ($q) {
    return $q->where(['name' => 'cake']);
);

Это создаст следующий SQL:

SELECT Articles.*
FROM articles Articles
INNER JOIN tags Tags ON Tags.name = 'cake'
INNER JOIN articles_tags ArticlesTags ON ArticlesTags.tag_id = Tags.id
  AND ArticlesTags.articles_id = Articles.id

Эта функция работает так же, как matching(), с разницей в том, что она не будет выбирать поля из ассоциации.

Параметры

string $assoc
Ассоциация для объединения.
callable $builder необязательно null

Функция, которая получит предварительно созданный объект запроса, который можно использовать для добавления пользовательских условий или выбора некоторых полей.

Возвращает


$this

См. также

\Cake\ORM\Query::matching()

insert()source public

insert( array $columns , array $types [] )

Создать запрос на вставку.

Изменяет тип запроса на 'insert'. Обратите внимание, что вызов этого метода сбросит любые данные, ранее установленные с помощью Query::values().

Можно объединить с методом where() для создания запросов на удаление.

Параметры

array $columns
Столбцы для вставки.
array $types необязательно []
Сопоставление между столбцами и их типами данных.

Возвращает


$this

Выбрасывает

RuntimeException
При отсутствии столбцов.

Переопределяет

Cake\Database\Query::insert()

jsonSerialize()source public

jsonSerialize( )

Выполняет запрос и преобразует результат в JSON.

Часть интерфейса JsonSerializable.

Возвращает

Cake\Datasource\ResultSetInterface
Данные для преобразования в JSON.

Реализация

JsonSerializable::jsonSerialize()

leftJoinWith()source public

leftJoinWith( string $assoc , callable $builder null )

Создаёт LEFT JOIN с переданной таблицей ассоциации, сохраняя соответствие внешнего ключа и пользовательские условия, первоначально установленные для него.

Эта функция добавит записи в граф contain.

Пример:

// Get the count of articles per user
$usersQuery
    ->select(['total_articles' => $query->func()->count('Articles.id')])
    ->leftJoinWith('Articles')
    ->group(['Users.id'])
    ->autoFields(true);

Вы также можете настроить условия, передаваемые LEFT JOIN:

// Get the count of articles per user with at least 5 votes
$usersQuery
    ->select(['total_articles' => $query->func()->count('Articles.id')])
    ->leftJoinWith('Articles', function ($q) {
        return $q->where(['Articles.votes >=' => 5]);
    })
    ->group(['Users.id'])
    ->autoFields(true);

Это создаст следующий SQL:

SELECT COUNT(Articles.id) AS total_articles, Users.*
FROM users Users
LEFT JOIN articles Articles ON Articles.user_id = Users.id AND Articles.votes >= 5
GROUP BY USers.id

Можно объединить глубокие ассоциации, используя точечную нотацию.

Пример:

// Total comments in articles by 'markstory'
$query
 ->select(['total_comments' => $query->func()->count('Comments.id')])
 ->leftJoinWith('Comments.Users', function ($q) {
    return $q->where(['username' => 'markstory']);
)
->group(['Users.id']);

Обратите внимание, что запрос, переданный в замыкание, будет принимать только вызовы select, where, andWhere и orWhere на него. Если вы хотите добавить более сложные фрагменты, вы можете сделать это непосредственно в основном запросе.

Параметры

string $assoc
Ассоциация для объединения.
callable $builder необязательно null

Функция, которая получит предварительно созданный объект запроса, который можно использовать для добавления пользовательских условий или выбора некоторых полей.

Возвращает


$this

matching()source public

matching( string $assoc , callable $builder null )

Добавляет условия фильтрации к этому запросу, чтобы получить только строки, имеющие отношение к другой строке из связанной таблицы, основанные на условиях в связанной таблице.

Эта функция добавит записи в граф contain.

Пример:

// Bring only articles that were tagged with 'cake'
$query->matching('Tags', function ($q) {
    return $q->where(['name' => 'cake']);
);

Можно фильтровать по глубоким ассоциациям, используя точечную нотацию:

Пример:

// Bring only articles that were commented by 'markstory'
$query->matching('Comments.Users', function ($q) {
    return $q->where(['username' => 'markstory']);
);

Так как эта функция создаст INNER JOIN, вы можете рассмотреть возможность вызова distinct для этого запроса, так как вы можете получить дублированные строки, если ваши условия не отфильтруют их уже. Это может быть, например, случай, когда один и тот же пользователь комментирует один и тот же артикл более одного раза.

Пример:

// Bring unique articles that were commented by 'markstory'
$query->distinct(['Articles.id'])
->matching('Comments.Users', function ($q) {
    return $q->where(['username' => 'markstory']);
);

Обратите внимание, что запрос, переданный в замыкание, будет принимать только вызовы select, where, andWhere и orWhere на него. Если вы хотите добавить более сложные фрагменты, вы можете сделать это непосредственно в основном запросе.

Параметры

string $assoc
Ассоциация для фильтрации.
callable $builder необязательно null

Функция, которая получит предварительно созданный объект запроса, который можно использовать для добавления пользовательских условий или выбора некоторых полей.

Возвращает


$this

notMatching()source public

notMatching( string $assoc , callable $builder null )

Добавляет условия фильтрации к этому запросу, чтобы получить только строки, не имеющие соответствия другой строке из связанной таблицы, основанные на условиях в связанной таблице.

Эта функция добавит записи в граф contain.

Пример:

// Bring only articles that were not tagged with 'cake'
$query->notMatching('Tags', function ($q) {
    return $q->where(['name' => 'cake']);
);

Можно фильтровать по глубоким ассоциациям, используя точечную нотацию:

Пример:

// Bring only articles that weren't commented by 'markstory'
$query->notMatching('Comments.Users', function ($q) {
    return $q->where(['username' => 'markstory']);
);

Так как эта функция создаст LEFT JOIN, вы можете рассмотреть возможность вызова distinct для этого запроса, так как вы можете получить дублированные строки, если ваши условия не отфильтруют их уже. Это может быть, например, случай, когда один и тот же артикл имеет несколько комментариев.

Пример:

// Bring unique articles that were commented by 'markstory'
$query->distinct(['Articles.id'])
->notMatching('Comments.Users', function ($q) {
    return $q->where(['username' => 'markstory']);
);

Обратите внимание, что запрос, переданный в замыкание, будет принимать только вызовы select, where, andWhere и orWhere на него. Если вы хотите добавить более сложные фрагменты, вы можете сделать это непосредственно в основном запросе.

Параметры

string $assoc
Ассоциация для фильтрации.
callable $builder необязательно null

Функция, которая получит предварительно созданный объект запроса, который можно использовать для добавления пользовательских условий или выбора некоторых полей.

Возвращает


$this
END_OF_DOCUMENT_MARKER

select()source public

select( array|Cake\Database\ExpressionInterface|string|Cake\ORM\Table|Cake\ORM\Association $fields [] , boolean $overwrite false )

Добавляет новые поля, которые будут возвращаться в результате выполнения запроса SELECT. Поля могут быть переданы в виде массива строк, массива объектов выражений, одного выражения или одной строки.

Если вы передадите экземпляр класса Cake\ORM\Table или Cake\ORM\Association , все поля в схеме таблицы или ассоциации будут добавлены в предложение select.

Параметры

массив|Cake\Database\ExpressionInterface|строка|Cake\ORM\Table|Cake\ORM\Association $fields необязательно []

поля, которые нужно добавить в список.

boolean $overwrite необязательно false
нужно ли сбросить поля переданным списком или нет

Возвращаемое значение


$this

Переопределяет

Cake\Database\Query::select()

sql()source public

sql( Cake\Database\ValueBinder $binder null )

Возвращает строковое представление этого объекта.

Параметры

Cake\Database\ValueBinder $binder необязательно null

$generator Заполнитель объекта, который будет содержать связанные значения для выражений

Возвращаемое значение

строка

Переопределяет

Cake\Database\Query::sql()

triggerBeforeFind()source public

triggerBeforeFind( )

Вызывает событие beforeFind для объекта репозитория запроса.

Будет вызвано не более одного раза и только для запросов select.

update()source public

update( string|null $table null )

Создает запрос обновления.

Изменяет тип запроса на 'update'. Может быть объединен с методами set() и where() для создания запросов обновления.

Параметры

строка|null $table необязательно null
Неиспользуемый параметр.

Возвращаемое значение


$this

Переопределяет

Cake\Database\Query::update()

Методы, унаследованные от Cake\Database\Query

__toString()source public

__toString( )

Возвращает строковое представление этого запроса (полное SQL-оператор).

Возвращаемое значение

строка

_conjugate()source protected

_conjugate( string $part , string|null|array|Cake\Database\ExpressionInterface|callable $append , string $conjunction , array $types )

Вспомогательная функция, используемая для построения условий путем объединения объектов QueryExpression.

Параметры

строка $part
Имя части запроса, к которой нужно добавить новую часть
строка|null|массив|Cake\Database\ExpressionInterface|обратный вызов $append
Выражение или функция-построитель для добавления.
строка $conjunction
тип конъюнкции, используемый для обработки части
массив $types
ассоциативный массив имен типов, используемых для привязки значений к запросу

_decorateStatement()source protected

_decorateStatement( Cake\Database\StatementInterface $statement )

Вспомогательная функция, используемая для обертывания исходного оператора из драйвера любыми зарегистрированными обратными вызовами.

Параметры

Cake\Database\StatementInterface $statement
для декорирования

Возвращаемое значение

Cake\Database\Statement\CallbackStatement

_makeJoin()source protected

_makeJoin( string|array $table , string|array|Cake\Database\ExpressionInterface $conditions , string $type )

Возвращает массив, который можно передать методу join, описывая отдельное условие присоединения

Параметры

строка|массив $table
Таблица, с которой нужно объединить
строка|массив|Cake\Database\ExpressionInterface $conditions

Условия для использования при объединении.

строка $type
тип объединения, который нужно использовать

Возвращаемое значение

массив

andHaving()source public

andHaving( string|array|Cake\Database\ExpressionInterface|callable $conditions , array $types [] )

Соединяет любой ранее определенный набор условий с предоставленным списком с помощью оператора AND в предложении HAVING. Этот метод работает точно так же, как метод andWhere() . Обратитесь к его документации для получения информации о том, как использовать каждый параметр.

Параметры

строка|массив|Cake\Database\ExpressionInterface|обратный вызов $conditions
Условие AND для HAVING.
массив $types необязательно []
ассоциативный массив имен типов, используемых для привязки значений к запросу

Возвращаемое значение


$this

См. также

\Cake\Database\Query::andWhere()

andWhere()source public

andWhere( string|array|Cake\Database\ExpressionInterface|callable $conditions , array $types [] )

Соединяет любой ранее определенный набор условий с предоставленным списком с помощью оператора AND. Эта функция принимает список условий в том же формате, что и метод where , поэтому вы можете использовать массивы, объекты выражений, функции обратного вызова или строки.

Важно отметить, что при вызове этой функции любой ранее определенный набор условий для этого запроса будет обрабатываться как один аргумент для оператора AND. Эта функция будет обрабатывать не только последнее определенное условие, но и все условия в целом.

При использовании массива для определения условий создание ограничений из каждой записи массива будет использовать ту же логику, что и с функцией where() . Это означает, что каждая запись массива будет соединяться с другой с помощью оператора AND, если вы не вложите условия в массив, используя другой оператор.

Примеры:

$query->where(['title' => 'Hello World')->andWhere(['author_id' => 1]);

Создаст:

WHERE title = 'Hello World' AND author_id = 1

$query
  ->where(['OR' => ['published' => false, 'published is NULL']])
  ->andWhere(['author_id' => 1, 'comments_count >' => 10])

Создаст:

WHERE (published = 0 OR published IS NULL) AND author_id = 1 AND comments_count > 10

$query
  ->where(['title' => 'Foo'])
  ->andWhere(function ($exp, $query) {
    return $exp
      ->add(['author_id' => 1])
      ->or_(['author_id' => 2]);
  });

Сгенерирует следующие условия:

WHERE (title = 'Foo') AND (author_id = 1 OR author_id = 2)

Параметры

строка|массив|Cake\Database\ExpressionInterface|обратный вызов $conditions
Условие для добавления с помощью AND.
массив $types необязательно []
ассоциативный массив имен типов, используемых для привязки значений к запросу

Возвращаемое значение


$this

См. также

\Cake\Database\Query::where()
Cake\Database\Type

bind()source public

bind( string|integer $param , mixed $value , string|integer $type 'string' )

Связывает заполнитель запроса со значением и типом.

Если тип выражен как "atype[]" (обратите внимание на фигурные скобки), это приведет к динамической переработке заполнителя, поэтому, если значение является массивом, это создаст столько же заполнитель, сколько значений в нем. Например:

$query->bind(':id', [1, 2, 3], 'int[]');

Создаст 3 целых заполнителя. При использовании именованных заполнитель, этот метод требует, чтобы заполнители включали : например :value.

Параметры

строка|целое число $param

заполнитель, который будет заменен на цитированную версию $value

смешанное $value
Значение, которое нужно связать
строка|целое число $type необязательно 'строка'

название сопоставленного типа, используемое для преобразования при отправке в базу данных

Возвращаемое значение


$this

bufferResults()source public

bufferResults( boolean|null $enable null )

Включить/отключить буферизацию результатов.

При включении результаты, возвращаемые этим запросом, будут буферизованы. Это позволяет вам многократно итерировать набор результатов или одновременно кэшировать и итерировать его.

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

Если вызвано без аргументов, возвращает, включена ли буферизация.

Параметры

boolean|null $enable необязательно null
включить ли буферизацию

Возвращаемое значение

boolean|Cake\Database\Query
$this

clause()source public

clause( string $name )

Возвращает любые данные, хранящиеся в указанном фрагменте запроса. Это полезно для изменения любой внутренней части запроса, и диалекты SQL используют его для преобразования запроса перед выполнением. Допустимые фрагменты, которые можно получить, это: delete, update, set, insert, values, select, distinct, from, join, set, where, group, having, order, limit, offset и union.

Возвращаемое значение для каждой из этих частей может различаться. Некоторые фрагменты используют QueryExpression для внутреннего хранения своего состояния, некоторые — массивы, а другие — булевы значения или целые числа. Это сводка типов возвращаемых значений для каждого фрагмента.

  • update: строка Имя таблицы, которую необходимо обновить
  • set: QueryExpression
  • insert: массив, вернёт массив, содержащий таблицу + столбцы.
  • values: ValuesExpression
  • select: массив, вернёт пустой массив, если поля не заданы
  • distinct: булево значение
  • from: массив таблиц
  • join: массив
  • set: массив
  • where: QueryExpression, возвращает null, если не задано
  • group: массив
  • having: QueryExpression, возвращает null, если не задано
  • order: OrderByExpression, возвращает null, если не задано
  • limit: целое число или QueryExpression, null, если не задано
  • offset: целое число или QueryExpression, null, если не задано
  • union: массив

Параметры

строка $name
имя фрагмента, который нужно вернуть

Возвращает

mixed

connection()source public

connection( Cake\Datasource\ConnectionInterface|null $connection null )

Устанавливает экземпляр подключения, который будет использоваться для выполнения и преобразования этого запроса. При вызове с аргументом null он вернёт текущий экземпляр подключения.

Параметры

Cake\Datasource\ConnectionInterface|null $connection optional null
экземпляр

Возвращает


$this|\Cake\Datasource\ConnectionInterface

decorateResults()source public

decorateResults( callable|null $callback , boolean $overwrite false )

Регистрирует обратный вызов, который выполняется для каждого результата, извлеченного из набора результатов. Функция обратного вызова получит в качестве первого параметра массив с исходными данными из базы данных для каждой извлеченной строки и должна вернуть строку с возможными изменениями.

Обратные вызовы будут выполняться лениво. Если для базы данных извлекаются только 3 строки, он будет вызван 3 раза, даже если в курсоре могут быть извлечены дополнительные строки.

Обратные вызовы стекируются в порядке их регистрации. Если вы хотите сбросить стек, вызовите эту функцию со вторым параметром, установленным в true.

Если вы хотите удалить все декораторы из стека, установите первый параметр в null, а второй — в true.

Пример

$query->decorateResults(function ($row) {
  $row['order_total'] = $row['subtotal'] + ($row['subtotal'] * $row['tax']);
   return $row;
});

Параметры

callable|null $callback
Обратный вызов для вызова при извлечении результатов.
boolean $overwrite optional false
Указывает, нужно ли добавить или заменить все существующие декораторы.

Возвращает


$this

distinct()source public

distinct( array|Cake\Database\ExpressionInterface|string|boolean $on [] , boolean $overwrite false )

Добавляет в запрос условие DISTINCT, чтобы удалить дубликаты из набора результатов. Это условие может использоваться только для запросов select.

Если вам необходимо отфильтровать дубликаты на основе строк, содержащих определённое поле или набор полей, вы можете передать массив полей для фильтрации. Имейте в виду, что этот вариант может не полностью поддерживаться во всех системах баз данных.

Примеры:

// Filters products with the same name and city
$query->select(['name', 'city'])->from('products')->distinct();

// Filters products in the same city
$query->distinct(['city']);
$query->distinct('city');

// Filter products with the same name
$query->distinct(['name'], true);
$query->distinct('name', true);

Параметры

массив|Cake\Database\ExpressionInterface|строка|булево значение $on optional []

Включить/выключить условие distinct или список полей для фильтрации

булево значение $overwrite optional false
нужно ли сбросить поля с переданным списком или нет

Возвращает


$this

epilog()source public

epilog( string|Cake\Database\Expression\QueryExpression|null $expression null )

Строка или выражение, которое будет добавлено к сгенерированному запросу

Примеры:

$query->select('id')->where(['author_id' => 1])->epilog('FOR UPDATE');
$query
 ->insert('articles', ['title'])
 ->values(['author_id' => 1])
 ->epilog('RETURNING id');

Параметры

строка|Cake\Database\Expression\QueryExpression|null $expression optional null
Выражение, которое нужно добавить

Возвращает


$this

execute()source public

execute( )

Компилирует SQL-представление этого запроса и выполняет его с помощью объекта подключений. Возвращает объект полученного оператора.

Выполнение запроса внутри включает в себя несколько шагов. Первый шаг — разрешить подключению преобразовать этот объект, чтобы он соответствовал его диалекту. Это может привести к генерации другого объекта Query, который будет фактически выполнен. Сразу после этого литеральные значения передаются подключению, чтобы они были привязаны к запросу безопасным способом. Наконец, полученный оператор декорируется пользовательскими объектами для выполнения обратных вызовов для каждой извлеченной строки при необходимости.

Полученный оператор итерируемый, поэтому он может использоваться в любом цикле так же, как и массив.

Этот метод может быть переопределен в подклассах запросов для декорирования поведения вокруг выполнения запроса.

Возвращает

Cake\Database\StatementInterface

from()source public

from( array|Cake\Database\ExpressionInterface|string $tables [] , boolean $overwrite false )

Добавляет одну или несколько таблиц для использования в предложении FROM в этом запросе. Таблицы могут передаваться как массив строк, массив объектов выражений, одно выражение или одна строка.

Если передается массив, ключи будут использоваться для алиасирования таблиц, используя значение в качестве реального поля для алиасирования. Можно алиасить строки, объекты ExpressionInterface или даже другие объекты Query.

По умолчанию эта функция будет добавлять любой переданный аргумент в список таблиц, которые должны быть выбраны, если только второй аргумент не установлен в true.

Этот метод можно использовать для select, update и delete запросов.

Примеры:

$query->from(['p' => 'posts']); // Produces FROM posts p
$query->from('authors'); // Appends authors: FROM posts p, authors
$query->from(['products'], true); // Resets the list: FROM products
$query->from(['sub' => $countQuery]); // FROM (SELECT ...) sub

Параметры

массив|Cake\Database\ExpressionInterface|строка $tables optional []
таблицы для добавления в список
булево значение $overwrite optional false
нужно ли сбросить таблицы с переданным списком или нет

Возвращает


$this

func()source public

func( )

Возвращает экземпляр объекта-строителя функций, который можно использовать для генерации произвольных SQL-функций.

Пример:

$query->func()->count('*');
$query->func()->dateDiff(['2012-01-05', '2012-01-02'])

Возвращает

Cake\Database\FunctionsBuilder

getIterator()source public

getIterator( )

Выполняет этот запрос и возвращает итератор результатов. Эта функция необходима для реализации интерфейса IteratorAggregate и позволяет итерировать по запросу, не вызывая execute() вручную, делая его похожим на набор результатов, а не на сам запрос.

Возвращает

Iterator

Реализация

IteratorAggregate::getIterator()

group()source public

group( array|Cake\Database\ExpressionInterface|string $fields , boolean $overwrite false )

Добавляет одно или несколько полей для использования в предложении GROUP BY для этого запроса. Поля могут передаваться как массив строк, массив объектов выражений, одно выражение или одна строка.

По умолчанию эта функция будет добавлять любой переданный аргумент в список полей для группировки, если только второй аргумент не установлен в true.

Примеры:

// Produces GROUP BY id, title
$query->group(['id', 'title']);

// Produces GROUP BY title
$query->group('title');

Параметры

массив|Cake\Database\ExpressionInterface|строка $fields
поля, которые нужно добавить в список
булево значение $overwrite optional false
нужно ли сбросить поля с переданным списком или нет

Возвращает


$this

having()source public

having( string|array|Cake\Database\ExpressionInterface|callable|null $conditions null , array $types [] , boolean $overwrite false )

Добавляет условие или набор условий, которые должны использоваться в предложении HAVING для этого запроса. Этот метод работает точно так же, как метод where(). Обратитесь к его документации, чтобы узнать, как использовать каждый параметр.

Параметры

строка|массив|Cake\Database\ExpressionInterface|обратный вызов|null $conditions optional null
Условие having.
массив $types optional []
ассоциативный массив имен типов, используемых для привязки значений к запросу
булево значение $overwrite optional false
нужно ли сбросить условия с переданным списком или нет

Возвращает


$this

См. также

\Cake\Database\Query::where()
END_OF_DOCUMENT_MARKER

innerJoin()source public

innerJoin( string|array $table , string|array|Cake\Database\ExpressionInterface $conditions [] , array $types [] )

Добавляет единственное условие INNER JOIN в запрос.

Это метод сокращенной записи для построения объединений через join().

Аргументы этого метода идентичны аргументам метода leftJoin() сокращенной записи, пожалуйста, обратитесь к описанию этого метода для получения дополнительных подробностей.

Параметры

string|array $table
Таблица для объединения
string|array|Cake\Database\ExpressionInterface $conditions необязательно []

Условие для объединения.

array $types необязательно []

Список типов, связанных с условиями, используемых для преобразования значений в соответствующее представление базы данных.

Возвращает


$this

into()source public

into( string $table )

Устанавливает имя таблицы для запросов вставки.

Параметры

string $table
Имя таблицы, в которую вставляются данные.

Возвращает


$this

join()source public

join( array|string|null $tables null , array $types [] , boolean $overwrite false )

Добавляет одну или несколько таблиц, которые будут использоваться как условия JOIN в этом запросе. Таблицы можно передавать в виде массива строк, массива, описывающего части объединения, массива с несколькими описаниями объединения или одной строкой.

По умолчанию эта функция будет добавлять любой переданный аргумент в список таблиц для объединения, если третий аргумент не задан в значении true.

Если тип объединения не указан, по умолчанию используется INNER JOIN: $query->join(['authors']) создаст INNER JOIN authors ON 1 = 1

Также можно использовать псевдонимы для объединений, используя ключ массива: $query->join(['a' => 'authors'])`` will produceINNER JOIN authors a ON 1 = 1`

Объединение можно полностью описать и использовать псевдоним, используя обозначение массива:

$query->join([
    'a' => [
        'table' => 'authors',
        'type' => 'LEFT',
        'conditions' => 'a.id = b.author_id'
    ]
]);
// Produces LEFT JOIN authors a ON a.id = b.author_id

Вы даже можете указать несколько объединений в массиве, включая полное описание:

$query->join([
    'a' => [
        'table' => 'authors',
        'type' => 'LEFT',
        'conditions' => 'a.id = b.author_id'
    ],
    'p' => [
        'table' => 'publishers',
        'type' => 'INNER',
        'conditions' => 'p.id = b.publisher_id AND p.name = "Cake Software Foundation"'
    ]
]);
// LEFT JOIN authors a ON a.id = b.author_id
// INNER JOIN publishers p ON p.id = b.publisher_id AND p.name = "Cake Software Foundation"

Использование условий и типов

Условие можно выразить, как в примерах выше, используя строку для сравнения столбцов или строку с уже процитированными буквальными значениями. Дополнительно можно использовать условия, выраженные в массивах или объектах выражений.

При использовании массивов для выражения условий часто желательно преобразовать литеральные значения в правильное представление базы данных. Это достигается с помощью второго параметра этой функции.

$query->join(['a' => [
    'table' => 'articles',
    'conditions' => [
        'a.posted >=' => new DateTime('-3 days'),
        'a.published' => true,
        'a.author_id = authors.id'
    ]
]], ['a.posted' => 'datetime', 'a.published' => 'boolean'])

Переопределение объединений

При создании объединённых объединений с помощью обозначения массива вы можете переопределить предыдущие определения объединений, используя тот же псевдоним в последующих вызовах этой функции, или вы можете заменить все ранее определённые объединения другим списком, если третий параметр этой функции установлен в значение true.

$query->join(['alias' => 'table']); // joins table with as alias
$query->join(['alias' => 'another_table']); // joins another_table with as alias
$query->join(['something' => 'different_table'], [], true); // resets joins list

Параметры

array|string|null $tables необязательно null
список таблиц, которые нужно объединить в запросе
array $types необязательно []
ассоциативный массив имён типов, используемых для привязки значений к запросу
boolean $overwrite необязательно false
должны ли быть сброшены объединения с переданным списком или нет

Возвращает


$this

См. также

Cake\Database\Type

leftJoin()source public

leftJoin( string|array $table , string|array|Cake\Database\ExpressionInterface $conditions [] , array $types [] )

Добавляет единственное условие LEFT JOIN в запрос.

Это метод сокращенной записи для построения объединений через join().

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

// LEFT JOIN authors ON authors.id = posts.author_id
$query->leftJoin('authors', 'authors.id = posts.author_id');

// LEFT JOIN authors a ON a.id = posts.author_id
$query->leftJoin(['a' => 'authors'], 'a.id = posts.author_id');

Условие можно передавать как строки, массивы или объекты выражений. При использовании массивов можно комбинировать их с параметром $types для определения способа преобразования значений:

$query->leftJoin(['a' => 'articles'], [
     'a.posted >=' => new DateTime('-3 days'),
     'a.published' => true,
     'a.author_id = authors.id'
], ['a.posted' => 'datetime', 'a.published' => 'boolean']);

См. join() для получения дополнительных подробностей об условиях и типах.

Параметры

string|array $table
Таблица для объединения
string|array|Cake\Database\ExpressionInterface $conditions необязательно []

Условие для объединения.

array $types необязательно []

Список типов, связанных с условиями, используемых для преобразования значений в соответствующее представление базы данных.

Возвращает


$this

limit()source public

limit( integer|Cake\Database\ExpressionInterface $num )

Устанавливает количество записей, которое должно быть получено из базы данных, принимает целое число или объект выражения, результатом вычисления которого является целое число. В некоторых базах данных эта операция может не поддерживаться или потребовать преобразования запроса для ограничения размера набора результатов.

Примеры

$query->limit(10) // generates LIMIT 10
$query->limit($query->newExpr()->add(['1 + 1'])); // LIMIT (1 + 1)

Параметры

integer|Cake\Database\ExpressionInterface $num
количество записей, которые должны быть возвращены

Возвращает


$this

modifier()source public

modifier( array|Cake\Database\ExpressionInterface|string $modifiers , boolean $overwrite false )

Добавляет один или несколько модификаторов SELECT, которые будут использоваться в SELECT.

По умолчанию эта функция будет добавлять любой переданный аргумент в список применяемых модификаторов, если второй аргумент не установлен в значение true.

Пример:

// Ignore cache query in MySQL
$query->select(['name', 'city'])->from('products')->modifier('SQL_NO_CACHE');
// It will produce the SQL: SELECT SQL_NO_CACHE name, city FROM products

// Or with multiple modifiers
$query->select(['name', 'city'])->from('products')->modifier(['HIGH_PRIORITY', 'SQL_NO_CACHE']);
// It will produce the SQL: SELECT HIGH_PRIORITY SQL_NO_CACHE name, city FROM products

Параметры

array|Cake\Database\ExpressionInterface|string $modifiers
модификаторы, которые должны быть применены к запросу
boolean $overwrite необязательно false
должен ли быть сброшен порядок со списком полей или нет

Возвращает


$this

newExpr()source public

newExpr( mixed $rawExpression null )

Возвращает новый объект QueryExpression. Эта функция полезна при создании сложных запросов с помощью интерфейса fluent. Вы также можете переопределить эту функцию в подклассах, чтобы использовать более специализированный класс QueryExpression, если это необходимо.

Вы можете необязательно передать одну строку с сырым SQL-запросом или массив выражений в любом формате, принятом классом \Cake\Database\Expression\QueryExpression:

$expression = $query->newExpr(); // Returns an empty expression object
$expression = $query->newExpr('Table.column = Table2.column'); // Return a raw SQL expression

Параметры

mixed $rawExpression необязательно null
Строка, массив или любой другой объект, который нужно обернуть в объект выражения

Возвращает

Cake\Database\Expression\QueryExpression

offset()source public

offset( integer|Cake\Database\ExpressionInterface $num )

Устанавливает количество записей, которые должны быть пропущены из исходного набора результатов. Это обычно используется для постраничной загрузки больших результатов. Принимает целое число или объект выражения, результатом вычисления которого является целое число.

В некоторых базах данных эта операция может не поддерживаться или потребовать преобразования запроса для ограничения размера набора результатов.

Примеры

$query->offset(10) // generates OFFSET 10
$query->offset($query->newExpr()->add(['1 + 1'])); // OFFSET (1 + 1)

Параметры

integer|Cake\Database\ExpressionInterface $num
количество записей, которые нужно пропустить

Возвращает


$this

orHaving()source public

orHaving( string|array|Cake\Database\ExpressionInterface|callable $conditions , array $types [] )

Подключает любой ранее определенный набор условий к предоставленному списку с помощью оператора OR в условии HAVING. Этот метод работает точно так же, как и метод orWhere(). Обратитесь к его документации, чтобы узнать, как использовать каждый параметр.

Параметры

string|array|Cake\Database\ExpressionInterface|callable $conditions
Условие OR для HAVING.
array $types необязательно []
ассоциативный массив имён типов, используемых для привязки значений к запросу.

Возвращает


$this

См. также

\Cake\Database\Query::orWhere()
END_OF_DOCUMENT_MARKER

orWhere()source public

orWhere( string|array|Cake\Database\ExpressionInterface|callable $conditions , array $types [] )

Подключает любой ранее определённый набор условий к предоставленному списку с помощью оператора OR. Эта функция принимает список условий в том же формате, что и метод where, поэтому вы можете использовать массивы, объекты выражений, функции обратного вызова или строки.

Важно отметить, что при вызове этой функции любой ранее заданный набор условий для этого запроса будет обрабатываться как один аргумент для оператора OR. Эта функция будет работать не только с последним определённым условием, но и со всеми условиями в целом.

При использовании массива для определения условий, создание ограничений для каждой записи массива будет использовать ту же логику, что и функция where(). Это означает, что каждая запись массива будет соединяться с другими с помощью оператора OR, если вы не вложите условия в массив, используя другой оператор.

Примеры:

$query->where(['title' => 'Hello World')->orWhere(['title' => 'Foo']);

Даст:

WHERE title = 'Hello World' OR title = 'Foo'

$query
  ->where(['OR' => ['published' => false, 'published is NULL']])
  ->orWhere(['author_id' => 1, 'comments_count >' => 10])

Даёт:

WHERE (published = 0 OR published IS NULL) OR (author_id = 1 AND comments_count > 10)

$query
  ->where(['title' => 'Foo'])
  ->orWhere(function ($exp, $query) {
    return $exp
      ->add(['author_id' => 1])
      ->or_(['author_id' => 2]);
  });

Генерирует следующие условия:

WHERE (title = 'Foo') OR (author_id = 1 OR author_id = 2)

Параметры

строка|массив|Cake\Database\ExpressionInterface|вызов обратного $conditions
Условия для добавления с помощью OR.
массив $types необязательно []
ассоциативный массив имён типов, используемых для привязки значений к запросу

Возвращает


$this

См. также

\Cake\Database\Query::where()
Cake\Database\Type

order()source public

order( array|Cake\Database\ExpressionInterface|string $fields , boolean $overwrite false )

Добавляет одно или несколько полей, которые будут использованы в условии ORDER для этого запроса. Поля можно передавать как массив строк, массив объектов выражений, одно выражение или одну строку.

Если передаётся массив, ключи будут использоваться как само поле, а значение будет представлять порядок, в котором это поле должно быть отсортировано. При вызове многократно с теми же полями в качестве ключа, последнее определение порядка будет преобладать над другими.

По умолчанию эта функция будет добавлять любой переданный аргумент в список полей для выбора, если второй аргумент не установлен в true.

Примеры:

$query->order(['title' => 'DESC', 'author_id' => 'ASC']);

Даёт:

ORDER BY title DESC, author_id ASC

$query->order(['title' => 'DESC NULLS FIRST'])->order('author_id');

Сгенерирует:

ORDER BY title DESC NULLS FIRST, author_id

$expression = $query->newExpr()->add(['id % 2 = 0']);
$query->order($expression)->order(['title' => 'ASC']);

Превратится в:

ORDER BY (id %2 = 0), title ASC

Если вам нужно задать сложные выражения в качестве условий сортировки, вы должны использовать orderAsc() или orderDesc().

Параметры

массив|Cake\Database\ExpressionInterface|строка $fields
поля, которые должны быть добавлены в список
логическое $overwrite необязательно false
сбрасывать ли порядок со списком полей или нет

Возвращает


$this

orderAsc()source public

orderAsc( string|Cake\Database\Expression\QueryExpression $field , boolean $overwrite false )

Добавляет условие ORDER BY с направлением ASC.

Этот метод позволяет задавать сложные выражения в качестве условий сортировки в отличие от order()

Параметры

строка|Cake\Database\Expression\QueryExpression $field
Поле, по которому сортировать.
логическое $overwrite необязательно false
Сбрасывать ли условия сортировки.

Возвращает


$this

orderDesc()source public

orderDesc( string|Cake\Database\Expression\QueryExpression $field , boolean $overwrite false )

Добавляет условие ORDER BY с направлением DESC.

Этот метод позволяет задавать сложные выражения в качестве условий сортировки в отличие от order()

Параметры

строка|Cake\Database\Expression\QueryExpression $field
Поле, по которому сортировать.
логическое $overwrite необязательно false
Сбрасывать ли условия сортировки.

Возвращает


$this

page()source public

page( integer $num , integer|null $limit null )

Установить страницу результатов, которую вы хотите получить.

Этот метод предоставляет более удобный интерфейс для установки limit + offset в наборе записей, которые вы хотите получить как результаты. Если пусто, limit будет по умолчанию равен существующему ограничению, а если и тот пустой, то будет использоваться 25.

Страницы должны начинаться с 1.

Параметры

целое число $num
Номер страницы, которую вы хотите получить.
целое число|null $limit необязательно null

Количество строк на странице. Если null, будет использоваться текущее ограничение.

Возвращает


$this

removeJoin()source public

removeJoin( string $name )

Удалить соединение, если оно было определено.

Полезно при повторном определении соединений или при необходимости изменить порядок условий соединения.

Параметры

строка $name
Псевдоним/имя соединения для удаления.

Возвращает


$this

rightJoin()source public

rightJoin( string|array $table , string|array|Cake\Database\ExpressionInterface $conditions [] , array $types [] )

Добавляет условие RIGHT JOIN в запрос.

Это метод для краткого построения соединений через join().

Аргументы этого метода идентичны сокращённому методу leftJoin() , пожалуйста, обратитесь к описанию этого метода для получения дополнительной информации.

Параметры

строка|массив $table
Таблица для объединения
строка|массив|Cake\Database\ExpressionInterface $conditions необязательно []

Условия для использования при объединении.

массив $types необязательно []

список типов, связанных с условиями, используемыми для преобразования значений в соответствующее представление базы данных.

Возвращает


$this

selectTypeMap()source public

selectTypeMap( Cake\Database\TypeMap $typeMap null )

Устанавливает класс TypeMap, где хранятся типы для каждого поля в условии select.

При вызове без аргументов возвращается текущий объект TypeMap.

Параметры

Cake\Database\TypeMap $typeMap необязательно null
Объект карты для использования

Возвращает


$this|\Cake\Database\TypeMap

set()source public

set( string|array|callable|Cake\Database\Expression\QueryExpression $key , mixed $value null , array $types [] )

Установить одно или несколько полей для обновления.

Примеры

Передача строки:

$query->update('articles')->set('title', 'The Title');

Передача массива:

$query->update('articles')->set(['title' => 'The Title'], ['title' => 'string']);

Передача функции обратного вызова:

$query->update('articles')->set(function ($exp) {
  return $exp->eq('title', 'The title', 'string');
});

Параметры

строка|массив|вызов обратного вызова|Cake\Database\Expression\QueryExpression $key

Имя столбца или массив ключей + значений для установки. Это также может быть QueryExpression, содержащий SQL-фрагмент. Это также может быть функция обратного вызова, которая должна возвращать объект выражения.

смешанное $value необязательно null

Значение для обновления $key. Может быть null, если $key является массивом или QueryExpression. Когда $key является массивом, этот параметр будет использоваться как $types вместо.

массив $types необязательно []
Типы столбцов для обработки данных.

Возвращает


$this

traverse()source public

traverse( callable $visitor , array $parts [] )

Перебирает каждую указанную часть. Функции обхода могут агрегировать результаты с помощью переменных в замыкании или переменных экземпляра. Эта функция обычно используется как способ обхода всех частей запроса, которые будут использоваться для построения запроса.

Функция обратного вызова получит 2 параметра: первый - значение части запроса, по которой итерируется, а второй - имя этой части.

Пример:

$query->select(['title'])->from('articles')->traverse(function ($value, $clause) {
    if ($clause === 'select') {
        var_dump($value);
    }
}, ['select', 'from']);

Параметры

вызов обратного вызова $visitor
Функция или вызов обратного вызова, которая будет выполняться для каждой части
массив $parts необязательно []
Участки запроса для обхода

Возвращает


$this

Реализация

Cake\Database\ExpressionInterface::traverse()
END_OF_DOCUMENT_MARKER

traverseExpressions()source public

traverseExpressions( callable $callback )

Эта функция работает аналогично функции traverse(), с той разницей, что она выполняет полное обходное прохождение всего дерева выражений. Она выполнит переданную функцию обратного вызова для каждого объекта ExpressionInterface, хранящегося внутри этого запроса на любой глубине вложенности в любой части запроса.

Функция обратного вызова получит в качестве первого параметра текущее посещаемое выражение.

Параметры

callable $callback

функция, которая должна быть выполнена для каждого ExpressionInterface, найденного внутри этого запроса.

Возвращает


$this|null

type()source public

type( )

Возвращает тип этого запроса (select, insert, update, delete).

Возвращает

string

union()source public

union( string|Cake\Database\Query $query , boolean $overwrite false )

Добавляет весь запрос, который будет использоваться вместе с оператором UNION с этим запросом. Это используется для объединения набора результатов этого запроса с набором результатов запроса, переданного в функцию. Вы можете добавить любое количество запросов, вызывая этот метод несколько раз с различными запросами.

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

Примеры

$union = (new Query($conn))->select(['id', 'title'])->from(['a' => 'articles']);
$query->select(['id', 'name'])->from(['d' => 'things'])->union($union);

Это даст:

SELECT id, name FROM things d UNION SELECT id, title FROM articles a

Параметры

string|Cake\Database\Query $query
полный SQL-запрос, который будет использоваться в операторе UNION
boolean $overwrite необязательный false
определяет, нужно ли сбросить список запросов, которые нужно обработать

Возвращает


$this

unionAll()source public

unionAll( string|Cake\Database\Query $query , boolean $overwrite false )

Добавляет весь запрос, который будет использоваться вместе с оператором UNION ALL с этим запросом. Это используется для объединения набора результатов этого запроса с набором результатов запроса, переданного в функцию. Вы можете добавить любое количество запросов, вызывая этот метод несколько раз с различными запросами.

В отличие от UNION, UNION ALL не будет удалять дублирующиеся строки.

$union = (new Query($conn))->select(['id', 'title'])->from(['a' => 'articles']);
$query->select(['id', 'name'])->from(['d' => 'things'])->unionAll($union);

Это даст:

SELECT id, name FROM things d UNION ALL SELECT id, title FROM articles a

Параметры

string|Cake\Database\Query $query
полный SQL-запрос, который будет использоваться в операторе UNION
boolean $overwrite необязательный false
определяет, нужно ли сбросить список запросов, которые нужно обработать

Возвращает


$this

valueBinder()source public

valueBinder( Cake\Database\ValueBinder|null $binder null )

Возвращает текущий используемый экземпляр ValueBinder. Если значение передано, оно будет установлено как новый используемый экземпляр.

ValueBinder отвечает за генерацию плейсхолдеров запроса и временное связывание значений с этими плейсхолдерами, чтобы они могли быть правильно переданы объекту оператора.

Параметры

Cake\Database\ValueBinder|null $binder необязательный null

новый экземпляр, который будет установлен. Если значение не передано, будет возвращён по умолчанию

Возвращает


$this|\Cake\Database\ValueBinder

values()source public

values( array|Cake\Database\Query $data )

Устанавливает значения для запроса вставки.

Многократные вставки могут выполняться, вызывая values() более одного раза или передавая массив наборов значений. Дополнительно, $data может быть экземпляром Query для вставки данных из другого SELECT-запроса.

Параметры

array|Cake\Database\Query $data
Данные для вставки.

Возвращает


$this

Вызывает исключение

Cake\Database\Exception

если вы пытаетесь установить значения до объявления столбцов. Или если вы пытаетесь установить значения в запросах, не являющихся запросами вставки.


where()source public

where( string|array|Cake\Database\ExpressionInterface|callable|null $conditions null , array $types [] , boolean $overwrite false )

Добавляет условие или набор условий, которые будут использоваться в предложении WHERE для этого запроса. Условия могут быть выражены как массив полей в качестве ключей с операторами сравнения в нём, значения массива будут использоваться для сравнения поля с таким литералом. Наконец, условия могут быть выражены как одно строковое значение или как массив строковых значений.

При использовании массивов каждая запись будет объединяться с остальными условиями с помощью оператора AND. Последовательные вызовы этой функции также объединяют новые условия, используя оператор AND. Кроме того, значения могут быть выражены с помощью объектов выражений, которые могут включать в себя другие объекты запросов.

Любые условия, созданные с помощью этого метода, могут быть использованы с любым типом запросов SELECT, UPDATE и DELETE.

Условие с операторами:

$query->where([
    'posted >=' => new DateTime('3 days ago'),
    'title LIKE' => 'Hello W%',
    'author_id' => 1,
], ['posted' => 'datetime']);

Предыдущий пример даст:

WHERE posted >= 2012-01-27 AND title LIKE 'Hello W%' AND author_id = 1

Второй параметр используется для указания ожидаемого типа для каждого переданного ключа. Допустимые типы могут быть взяты из сопоставления с классом Database\Type.

Вложенные условия с союзами:

$query->where([
    'author_id !=' => 1,
    'OR' => ['published' => true, 'posted <' => new DateTime('now')],
    'NOT' => ['title' => 'Hello']
], ['published' => boolean, 'posted' => 'datetime']

Предыдущий пример даст:

WHERE author_id = 1 AND (published = 1 OR posted < '2012-02-01') AND NOT (title = 'Hello')

Вы можете вкладывать условия с союзами, насколько это необходимо. Иногда вам может потребоваться определить 2 различных варианта для одного ключа. В этом случае вы можете обернуть каждое условие в новый массив:

$query->where(['OR' => [['published' => false], ['published' => true]])

Обратите внимание, что каждый раз, когда вы вызываете where() с третьим параметром, установленным в false (по умолчанию), он объединяет переданные условия с предыдущим сохранённым списком, используя оператор AND. Кроме того, использование одного и того же ключа массива дважды в последовательных вызовах этого метода не перепишет предыдущее значение.

Использование объектов выражений:

$exp = $query->newExpr()->add(['id !=' => 100, 'author_id' != 1])->tieWith('OR');
$query->where(['published' => true], ['published' => 'boolean'])->where($exp);

Предыдущий пример даст:

WHERE (id != 100 OR author_id != 1) AND published = 1

Другие объекты Query могут использоваться в качестве условий для любого поля.

Добавление условий поэтапно:

Вы можете использовать функции обратного вызова для построения сложных выражений. Функции получают в качестве первого аргумента новый объект QueryExpression и этот экземпляр запроса в качестве второго аргумента. Функции должны возвращать объект выражения, который будет добавлен в список условий запроса с использованием оператора AND.

$query
  ->where(['title !=' => 'Hello World'])
  ->where(function ($exp, $query) {
    $or = $exp->or_(['id' => 1]);
    $and = $exp->and_(['id >' => 2, 'id <' => 10]);
   return $or->add($and);
  });
  • Предыдущий пример даст:

WHERE title != 'Hello World' AND (id = 1 OR (id > 2 AND id < 10))

Условие как строки:

$query->where(['articles.author_id = authors.id', 'modified IS NULL']);

Предыдущий пример даст:

WHERE articles.author_id = authors.id AND modified IS NULL

Обратите внимание, что при использовании нотации массива или объектов выражений все значения будут правильно процитированы и автоматически преобразованы в соответствующий тип данных базы данных. Это защищает ваше приложение от SQL-инъекций. Если вы используете строковые условия, убедитесь, что ваши значения правильно процитированы. Лучше всего не использовать строковые условия.

Параметры

string|array|Cake\Database\ExpressionInterface|callable|null $conditions необязательный null
Условия для фильтрации.
array $types необязательный []
ассоциативный массив имён типов, используемых для привязки значений к запросу
boolean $overwrite необязательный false
определяет, нужно ли сбросить условия с переданным списком или нет

Возвращает


$this

См. также

Cake\Database\Type
Cake\Database\Expression\QueryExpression

Методы, используемые из Cake\Datasource\QueryTrait

_decoratorClass()source protected

_decoratorClass( )

Возвращает имя класса, используемого для декорирования результатов

Возвращает

string

aliasField()source public

aliasField( string $field , string|null $alias null )

Возвращает массив ключ => значение, представляющий одно алиасированное поле, которое можно передать непосредственно методу select(). Ключ будет содержать псевдоним, а значение — фактическое имя поля.

Если поле уже имеет псевдоним, он не будет изменён. Если $alias не передан, будет использован по умолчанию столбец для этого запроса.

Параметры

string $field
Поле для присвоения псевдонима
string|null $alias необязательный null
Псевдоним, используемый для добавления префикса к полю

Возвращает

array

aliasFields()source public

aliasFields( array $fields , string|null $defaultAlias null )

Выполняет aliasField() для каждого поля в переданном списке и возвращает результат в единственном массиве.

Параметры

array $fields
Поля для присвоения псевдонима
string|null $defaultAlias необязательный null
Значение псевдонима по умолчанию

Возвращает

array

eagerLoaded()source public

eagerLoaded( boolean|null $value null )

Устанавливает экземпляр запроса в качестве запроса с ленивой загрузкой. Если аргумент не передан, возвращается значение текущего настроенного запроса _eagerLoaded.

Параметры

boolean|null $value необязательно null
Выполнять ли ленивую загрузку.

Возвращает


$this|\Cake\ORM\Query

first()source public

first( )

Возвращает первый результат выполнения этого запроса. Если запрос еще не выполнен, он установит ограничение до 1 для повышения производительности.

Пример:

$singleUser = $query->select(['id', 'username'])->first();

Возвращает

mixed
первый результат из набора результатов

firstOrFail()source public

firstOrFail( )

Возвращает первый результат из выполняемого запроса или вызывает исключение.

Возвращает

mixed
Первый результат из набора результатов.

Выбрасывает

Cake\Datasource\Exception\RecordNotFoundException
При отсутствии первого запися.

formatResults()source public

formatResults( callable $formatter null , boolean|integer $mode 0 )

Регистрирует новую функцию обратного вызова для форматирования, которая должна быть выполнена при попытке извлечения результатов из базы данных.

Функции форматирования получат в качестве первого параметра итератор ResultSetDecorator, который можно просматривать и изменять по своему усмотрению.

Функции обратного вызова должны вернуть объект-итератор, который будет использоваться в качестве значения возврата для результата этого запроса. Функции форматирования применяются после выполнения всех MapReduce процедур для этого запроса.

Если первый аргумент установлен в null, возвращается список ранее зарегистрированных процедур MapReduce.

Если второй аргумент установлен в true, предыдущие функции форматирования удаляются и заменяются переданным первым аргументом.

Пример:

// Return all results from the table indexed by id
$query->select(['id', 'name'])->formatResults(function ($results) {
  return $results->indexBy('id');
});

// Add a new column to the ResultSet
$query->select(['name', 'birth_date'])->formatResults(function ($results) {
  return $results->map(function ($row) {
    $row['age'] = $row['birth_date']->diff(new DateTime)->y;
    return $row;
  });
});

Параметры

callable $formatter необязательно null
Функция форматирования.
boolean|integer $mode необязательно 0
Определяет, нужно ли перезаписывать, добавлять или вставлять функцию форматирования.

Возвращает


$this|array

getIterator()source public

getIterator( )

Выполняет этот запрос и возвращает итератор результатов. Эта функция необходима для реализации интерфейса IteratorAggregate и позволяет перебирать запрос без ручного вызова execute(), тем самым делая его похожим на набор результатов, а не сам запрос.

Возвращает

Iterator

getOptions()source public

getOptions( )

Возвращает массив пользовательских параметров, примененных к этому запросу и которые еще не были обработаны другим методом в этом классе.

Пример:

$query->applyOptions(['doABarrelRoll' => true, 'fields' => ['id', 'name']);
 $query->getOptions(); // Returns ['doABarrelRoll' => true]

Возвращает

array

См. также

\Cake\ORM\Query::applyOptions() для ознакомления с параметрами, которые будут обработаны этим классом и не будут возвращены этой функцией


mapReduce()source public

mapReduce( callable $mapper null , callable $reducer null , boolean $overwrite false )

Регистрирует новую процедуру MapReduce, которая будет выполнена над результатами базы данных. Как вызывающая функция, так и функция-маппер должны быть вызываемыми объектами.

Процедуры MapReduce будут выполняться только при выполнении запроса и попытке извлечения первого результата.

Если первый аргумент установлен в null, возвращается список ранее зарегистрированных процедур MapReduce.

Если третий аргумент установлен в true, предыдущие функции map и reduce удаляются и заменяются переданными аргументами.

Параметры

callable $mapper необязательно null
Функция-маппер.
callable $reducer необязательно null
Функция-редуктор.
boolean $overwrite необязательно false
Установите в true, чтобы перезаписать существующие функции map и reduce.

Возвращает


$this|array

См. также

\Cake\Collection\Iterator\MapReduce для получения подробной информации о том, как использовать передачу данных для функции MapReduce.

repository()source public

repository( Cake\Datasource\RepositoryInterface $table null )

Возвращает объект таблицы по умолчанию, который будет использоваться этим запросом, то есть таблицу, которая будет отображаться в инструкции from.

При вызове с аргументом Table объект таблицы по умолчанию будет установлен, а этот объект запроса будет возвращен для цепочки.

Параметры

Cake\Datasource\RepositoryInterface $table необязательно null
Объект таблицы по умолчанию.

Возвращает

Cake\Datasource\RepositoryInterface|Cake\Datasource\QueryTrait
$this

setResult()source public

setResult( Cake\Datasource\ResultSetInterface $results )

Устанавливает набор результатов для запроса.

Установка набора результатов запроса сделает execute() бесполезной операцией. Вместо выполнения SQL-запроса и извлечения результатов будет возвращен набор результатов, предоставленный этому методу.

Этот метод наиболее полезен в сочетании с результатами, хранящимися в кэше.

Параметры

Cake\Datasource\ResultSetInterface $results
Результаты, которые должен возвращать этот запрос.

Возвращает


$this Экземпляр запроса.

toArray()source public

toArray( )

Возвращает массив, представляющий результаты после выполнения запроса.

Возвращает

array

Методы, используемые из Cake\Database\TypeMapTrait

defaultTypes()source public

defaultTypes( array $types null )

Позволяет устанавливать типы по умолчанию при объединении запроса

Параметры

array $types необязательно null
Массив типов для установки.

Возвращает


$this|array

typeMap()source public

typeMap( array|Cake\Database\TypeMap|null $typeMap null )

Создает новую TypeMap, если $typeMap является массивом, в противном случае возвращает существующую карту типов или обменивает ее на заданную.

Параметры

array|Cake\Database\TypeMap|null $typeMap необязательно null
Создает TypeMap, если это массив, в противном случае устанавливает заданную TypeMap

Возвращает


$this|\Cake\Database\TypeMap

Сводка магических методов

append()source public

append( array|Traversable $items )

Добавляет дополнительные строки к результатам запроса.

Параметры

array|Traversable $items

Возвращает

Cake\Collection\CollectionInterface

chunk()source public

chunk( $size )

Группирует результаты в массивы по $size строк.

Параметры

$size

Возвращает

Cake\Collection\CollectionInterface

combine()source public

combine( $k , $v , $g )

Возвращает значения столбца $v, индексированные столбцом $k и сгруппированные по $g.

Параметры

$k
$v
$g необязательно

Возвращает

Cake\Collection\CollectionInterface

countBy()source public

countBy( string|callable $field )

Возвращает количество уникальных значений для столбца

Параметры

string|callable $field

Возвращает

integer

each()source public

each( callable $c )

Передает каждый результат запроса вызываемому объекту.

Параметры

callable $c

Возвращает

Cake\Collection\CollectionInterface

every()source public

every( callable $c )

Возвращает true, если все результаты проходят проверку вызываемым объектом.

Параметры

callable $c

Возвращает

boolean

extract()source public

extract( $field )

Извлекает один столбец из каждой строки.

Параметры

$field

Возвращает

Cake\Collection\CollectionInterface

filter()source public

filter( callable $c )

Оставляет результаты, прошедшие проверку вызываемым объектом.

Параметры

callable $c необязательно

Возвращает

Cake\Collection\CollectionInterface

groupBy()source public

groupBy( string|callable $field )

Группирует все результаты в памяти по значению столбца.

Параметры

string|callable $field

Возвращает

Cake\Collection\CollectionInterface

indexBy()source public

indexBy( string|callable $field )

Возвращает результаты, индексированные значением столбца.

Параметры

string|callable $field

Возвращает

Cake\Collection\CollectionInterface

isEmpty()source public

isEmpty( $size )

Возвращает true, если этот запрос не нашел результатов.

Параметры

$size

Возвращает

boolean

last()source public

last( )

Возвращает последнюю строку результата запроса.

Возвращает

mixed

map()source public

map( callable $c )

Изменяет каждый из результатов с помощью вызываемого объекта.

Параметры

callable $c

Возвращает

Cake\Collection\CollectionInterface

max()source public

max( $field , $type )

Возвращает максимальное значение для одного столбца во всех результатах.

Параметры

$field
$type необязательно

Возвращает

mixed

min()source public

min( $field , $type )

Возвращает минимальное значение для одного столбца во всех результатах.

Параметры

$field
$type необязательно

Возвращает

mixed

nest()source public

nest( $k , $p )

Создает древовидную структуру, вложенную значения столбца $p в те, которые имеют одинаковое значение для $k.

Параметры

$k
$p

Возвращает

Cake\Collection\CollectionInterface

reduce()source public

reduce( callable $c , $zero )

Сворачивает все результаты в одно значение с помощью вызываемого объекта.

Параметры

callable $c
$zero необязательно

Возвращает

mixed

reject()source public

reject( callable $c )

Удаляет результаты, прошедшие проверку вызываемым объектом.

Параметры

callable $c

Возвращает

Cake\Collection\CollectionInterface

sample()source public

sample( $size )

Перемешивает результаты в памяти и возвращает подмножество из них.

Параметры

$size необязательно

Возвращает

Cake\Collection\CollectionInterface

shuffle()source public

shuffle( )

Перемешивает порядок возвращаемых результатов в памяти.

Возвращает

Cake\Collection\CollectionInterface

skip()source public

skip( integer $howMany )

Пропускает некоторые строки с начала результата запроса.

Параметры

integer $howMany

Возвращает

Cake\Collection\CollectionInterface

some()source public

some( callable $c )

Возвращает true, если хотя бы один из результатов проходит проверку вызываемым объектом.

Параметры

callable $c

Возвращает

boolean

stopWhen()source public

stopWhen( callable $c )

Возвращает каждую строку, пока вызываемый объект не вернет true.

Параметры

callable $c

Возвращает

Cake\Collection\CollectionInterface

sumOf()source public

sumOf( string|callable $field )

Возвращает сумму всех значений для одного столбца.

Параметры

string|callable $field

Возвращает

float

take()source public

take( $size , $from )

Ограничение и смещение результатов запроса в памяти.

Параметры

$size необязательно
$from

Возвращает

Cake\Collection\CollectionInterface

toArray()source public

toArray( )

Возвращает массив ключ-значение с результатами этого запроса.

Возвращает

array

Реализация

Cake\Datasource\QueryInterface::toArray()

toList()source public

toList( )

Возвращает массив с результатами этого запроса с числовыми индексами.

Возвращает

array

zip()source public

zip( array|Traversable $c )

Возвращает первый результат и из запроса, и из $c в массиве, затем второй результат и так далее.

Параметры

массив|Перебираемый $c

Возвращает

Cake\Collection\CollectionInterface

zipWith()source public

zipWith( callable $c )

Возвращает каждый результат из вызова $c с первой строкой запроса и каждым элементом, затем второй строкой и так далее.

Параметры

вызов $c

Возвращает

Cake\Collection\CollectionInterface

Подробное описание свойств

$_autoFieldssource

protected boolean

Отслеживает, должен ли исходный запрос включать поля из таблицы верхнего уровня.

$_beforeFindFiredsource

protected boolean

Истина, если событие beforeFind уже было запущено для этого запроса

false

$_countersource

protected вызов

Функция вызова, которая может использоваться для расчета общего количества записей, которые будут соответствовать этому запросу, когда не используется limit

$_eagerLoadersource

protected Cake\ORM\EagerLoader

Экземпляр класса, ответственного за хранение содержаний ассоциаций и для их ленивой загрузки при выполнении этого запроса

$_hasFieldssource

protected boolean

Пользователь выбрал какие-либо поля перед выполнением, это используется для определения, должны ли быть выбраны какие-либо поля автоматически.

$_hydratesource

protected boolean

Нужно ли гидратировать результаты в объекты сущностей

true

$_resultsCountsource

protected целое число

Значение COUNT(*) для запроса.

При установке выполнение запроса count будет пропущено.

© 2005–2016 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.
http://api.cakephp.org/3.2/class-Cake.ORM.Query.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API