Spec-Zone.ru › CakePHP 3.4

Класс 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
    Истина, если событие beforeFind уже было вызвано для этого запроса
  • $_counter protected
    callable

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

  • $_eagerLoader protected
    Cake\ORM\EagerLoader

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

  • $_hasFields protected
    boolean

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

  • $_hydrate protected
    boolean
    Необходимо ли гидратировать результаты в объекты сущностей
  • $_resultsCount protected
    integer|null
    Значение 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 и сбрасывает некоторые состояния.
  • clearContain() public
    Очищает содержащие ассоциации из текущего запроса.
  • contain() public

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

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

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

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

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

  • enableAutoFields() public
    Устанавливает, нужно ли ORM автоматически добавлять поля.
  • enableHydration() public
    Переключает гидрацию сущностей.
  • find() public
    Применение пользовательских находок для существующего объекта запроса.
  • getEagerLoader() public
    Возвращает текущий настроенный экземпляр.
  • hydrate() public
    Переключает гидрацию сущностей.
  • innerJoinWith() public

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

  • insert() public
    Создает запрос на вставку.
  • isAutoFieldsEnabled() public
    Получает, нужно ли ORM автоматически добавлять поля.
  • isHydrationEnabled() public
    Возвращает текущий режим гидрации.
  • jsonSerialize() public
    Выполняет запрос и преобразует набор результатов в JSON.
  • leftJoinWith() public

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

  • matching() public

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

  • notMatching() public

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

  • select() public

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

  • setEagerLoader() public

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

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

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

__call()source public

__call( $method , $arguments )

Исключения

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

__clone()source public

__clone( )

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

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

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

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( )

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

_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
Если этот метод вызывается для запроса, не являющегося запросом на выборку.

Реализация

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() отключит авто-поля. Вы можете снова включить авто-поля с помощью этого метода.

Устарело

3.4.0 Используйте enableAutoFields()/isAutoFieldsEnabled() вместо этого.

Параметры

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

Возвращает

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

cache()source public

cache( $key , $config 'default' )

Возвращает


$this

Исключения

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

cleanCopy()source public

cleanCopy( )

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

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

  • autoFields
  • limit
  • offset
  • функции map/reduce
  • форматировщики результатов
  • order
  • включения

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

Возвращает

Cake\ORM\Query

clearContain()source public

clearContain( )

Очищает содержащиеся ассоциации из текущего запроса.

Возвращает


$this
END_OF_DOCUMENT_MARKER

contain()source public

contain( array|string|null $associations null , callable|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 a query builder to add conditions to the containment
$query->contain('Authors', function ($q) {
    return $q->where(...); // add conditions
});
// Use special join conditions for multiple containments in the same method call
$query->contain([
    'Authors' => [
        'foreignKey' => false,
        'queryBuilder' => function ($q) {
            return $q->where(...); // Add full filtering conditions
        }
    ],
    'Tags' => function ($q) {
        return $q->where(...); // add conditions
    }
]);

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

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

Параметры

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

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

Возвращает

array|Cake\ORM\Query
$this

count()source public

count( )

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

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

Возвращает

integer

Реализация

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 )

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

Устарело

3.4.0 Используйте setEagerLoader()/getEagerLoader() вместо этого.

Параметры

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

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

Возвращает

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

enableAutoFields()source public

enableAutoFields( boolean $value true )

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

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

Параметры

boolean $value необязательно true
Установите значение true для включения, false для отключения.

Возвращает


$this

enableHydration()source public

enableHydration( boolean $enable true )

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

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

Параметры

boolean $enable необязательно true
Используйте boolean для установки режима гидрации.

Возвращает


$this

find()source public

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

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

Параметры

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

Возвращает


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

См. также

\Cake\ORM\Table::find()

Реализация

Cake\Datasource\QueryInterface::find()

getEagerLoader()source public

getEagerLoader( )

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

Возвращает

Cake\ORM\EagerLoader

hydrate()source public

hydrate( boolean|null $enable null )

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

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

Устарело

3.4.0 Используйте enableHydration()/isHydrationEnabled() вместо этого.

Параметры

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
Если столбцов 0.

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

Cake\Database\Query::insert()
END_OF_DOCUMENT_MARKER

isAutoFieldsEnabled()source public

isAutoFieldsEnabled( )

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

По умолчанию вызов select() отключает автоматическое добавление полей. Вы можете снова включить автоматическое добавление полей с помощью enableAutoFields().

Возвращает

boolean
Текущее значение.

isHydrationEnabled()source public

isHydrationEnabled( )

Возвращает текущий режим гидратации.

Возвращает

boolean

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'])
    ->enableAutoFields(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'])
    ->enableAutoFields(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

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.

Параметры

array|Cake\Database\ExpressionInterface|string|Cake\ORM\Table|Cake\ORM\Association $fields необязательно []

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

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

Возвращает


$this

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

Cake\Database\Query::select()

setEagerLoader()source public

setEagerLoader( Cake\ORM\EagerLoader $instance )

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

Параметры

Cake\ORM\EagerLoader $instance
Загрузчик ассоциаций для использования.

Возвращает


$this

sql()source public

sql( Cake\Database\ValueBinder $binder null )

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

Параметры

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

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

Возвращает

string

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

Cake\Database\Query::sql()

triggerBeforeFind()source public

triggerBeforeFind( )

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

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

update()source public

update( string|null $table null )

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

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

Параметры

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

Возвращает


$this

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

Cake\Database\Query::update()

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

__toString()source public

__toString( )

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

Возвращает

string

_conjugate()source protected

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

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

Параметры

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

_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, описывающему отдельное условие объединения.

Параметры

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

Условия, используемые для объединения.

string $type
тип объединения

Возвращает

array

andHaving()source public

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

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

Параметры

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

Возвращает


$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
      ->or_(['author_id' => 1])
      ->add(['author_id' => 2]);
  });

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

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

Параметры

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

Возвращает


$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.

Параметры

string|integer $param

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

mixed $value
Значение, подлежащее привязке
string|integer $type optional 'string'

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

Возвращает


$this

bufferResults()source public

bufferResults( boolean|null $enable null )

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

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

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

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

Устарело

3.4.0 Используйте enableBufferedResults()/isBufferedResultsEnabled() вместо этого.

Параметры

boolean|null $enable optional 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: string Имя таблицы для обновления
  • set: QueryExpression
  • insert: массив, вернёт массив, содержащий таблицу + столбцы.
  • values: ValuesExpression
  • select: массив, вернёт пустой массив, если нет полей
  • distinct: boolean
  • from: массив таблиц
  • join: массив
  • set: массив
  • where: QueryExpression, возвращает null, если не задано
  • group: массив
  • having: QueryExpression, возвращает null, если не задано
  • order: OrderByExpression, возвращает null, если не задано
  • limit: целое число или QueryExpression, null, если не задано
  • offset: целое число или QueryExpression, null, если не задано
  • union: массив

Параметры

string $name
имя предложения для возврата

Возвращает

mixed

Выбрасывает

InvalidArgumentException
Если указанное предложение не существует.

connection()source public

connection( Cake\Database\Connection|null $connection null )

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

Устарело

3.4.0 Используйте setConnection()/getConnection() вместо этого.

Параметры

Cake\Database\Connection|null $connection optional null
Экземпляр соединения

Возвращает


$this|\Cake\Database\Connection

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
END_OF_DOCUMENT_MARKER

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);

Параметры

array|Cake\Database\ExpressionInterface|string|boolean $on опционально []

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

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

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


$this

enableBufferedResults()source public

enableBufferedResults( boolean $enable true )

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

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

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

Параметры

boolean $enable опционально true
Включить или отключить буферизацию

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


$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');

Параметры

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

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


$this

execute()source public

execute( )

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

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

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

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

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

Cake\Database\StatementInterface

from()source public

from( array|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

Параметры

array|string $tables опционально []

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

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

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


$this|array

func()source public

func( )

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

Пример:

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

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

Cake\Database\FunctionsBuilder

getConnection()source public

getConnection( )

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

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

Cake\Database\Connection

getIterator()source public

getIterator( )

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

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

Cake\Database\StatementInterface|null

Реализация

IteratorAggregate::getIterator()

getSelectTypeMap()source public

getSelectTypeMap( )

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

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

Cake\Database\TypeMap

getValueBinder()source public

getValueBinder( )

Возвращает текущий используемый экземпляр ValueBinder.

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

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

Cake\Database\ValueBinder

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');

Параметры

array|Cake\Database\ExpressionInterface|string $fields
поля для добавления в список
boolean $overwrite опционально false
нужно ли сбросить поля с переданным списком или нет

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


$this

having()source public

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

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

Параметры

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

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


$this

См. также

\Cake\Database\Query::where()

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
END_OF_DOCUMENT_MARKER ```

into()source public

into( string $table )

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

Параметры

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

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


$this

isBufferedResultsEnabled()source public

isBufferedResultsEnabled( )

Возвращает, включено/выключено ли буферирование результатов.

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

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

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

boolean

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

Параметры

массив|строка|null $tables необязательный null
список таблиц для объединения в запросе
массив $types необязательный []
ассоциативный массив имен типов, используемых для привязки значений к запросу
булево $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() для получения дополнительной информации об условиях и типах.

Параметры

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

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

массив $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)

Параметры

целое число|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

Параметры

массив|Cake\Database\ExpressionInterface|строка $modifiers
модификаторы, которые нужно применить к запросу
булево $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

Параметры

смешанное $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)

Параметры

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

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


$this

orHaving()source public

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

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

Устаревшее

3.5.0 Этот метод создаёт сложно предсказуемый SQL на основе текущего состояния запроса. Используйте Query::having() вместо него, так как он имеет более предсказуемое и понятное поведение.


Параметры

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

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


$this

См. также

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

orWhere()source public

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

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

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

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

Примеры:

$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
      ->or_(['author_id' => 1])
      ->add(['author_id' => 2]);
  });

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

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

Устарело

3.5.0 Этот метод создаёт сложный для предсказания SQL на основе текущего состояния запроса. Используйте Query::where() вместо этого, так как он имеет более предсказуемое и легко понимаемое поведение.


Параметры

строка|массив|Cake\Database\ExpressionInterface|вызов $conditions
Условия, которые нужно добавить с ИЛИ.
массив $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 )

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

Этот метод предоставляет более удобный интерфейс для установки ограничения + смещения в наборе записей, которые вы хотите в качестве результатов. Если пусто, ограничение по умолчанию будет равно существующему ограничению, а если и оно пусто, то 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

rowCountAndClose()source public

rowCountAndClose( )

Выполняет SQL этого запроса и немедленно закрывает оператор перед возвращением количества строк изменённых записей.

Этот метод может использоваться с запросами UPDATE и DELETE, но не рекомендуется для запросов SELECT и не используется для подсчёта записей.

Пример

$rowCount = $query->update('articles')
                ->set(['published'=>true])
                ->where(['published'=>false])
                ->rowCountAndClose();

Приведённый выше пример изменит столбец published на true для всех записей с false и вернёт количество обновлённых записей.

Возвращает

целое число

selectTypeMap()source public

selectTypeMap( Cake\Database\TypeMap $typeMap null )

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

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

Устарело

3.4.0 Используйте setSelectTypeMap()/getSelectTypeMap() вместо этого.

Параметры

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

setConnection()source public

setConnection( Cake\Database\Connection $connection )

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

Параметры

Cake\Database\Connection $connection
Экземпляр соединения

Возвращает


$this

setSelectTypeMap()source public

setSelectTypeMap( Cake\Database\TypeMap $typeMap )

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

Параметры

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

Возвращает


$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']);

Параметры

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

Возвращает


$this

Реализация

Cake\Database\ExpressionInterface::traverse()

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 optional 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 optional false
указывает, нужно ли сбросить список запросов для обработки или нет

Возвращает


$this

valueBinder()source public

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

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

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

Устарело

3.5.0 Используйте getValueBinder() для получения значения вместо этого.

Параметры

Cake\Database\ValueBinder|null $binder optional 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

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

Добавление условий в несколько шагов:

Вы можете использовать вызываемые функции для построения сложных выражений. Функции принимают в качестве первого аргумента новый объект 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 optional null
Условия для фильтрации.
array $types optional []
ассоциативный массив имён типов, используемых для привязки значений к запросу
boolean $overwrite optional 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 не передан, будет использована таблица по умолчанию для этого запроса.

Параметры

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

Возвращает

массив

aliasFields()source public

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

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

Параметры

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

Возвращает

массив

eagerLoaded()source public

eagerLoaded( boolean|null $value null )

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

Устарело

3.5.0 Используйте isEagerLoaded() для получения значения вместо этого.

Параметры

boolean|null $value необязательно null
Нужно ли загружать неявные данные.

Возвращает


$this|\Cake\ORM\Query

first()source public

first( )

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

Пример:

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

Возвращает

Cake\Datasource\EntityInterface|массив|null
Первый результат из набора результатов.

firstOrFail()source public

firstOrFail( )

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

Возвращает

Cake\Datasource\EntityInterface|массив
Первый результат из набора результатов.

Выбрасывает

Cake\Datasource\Exception\RecordNotFoundException
Когда записи не найдено.

formatResults()source public

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

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

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

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

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

Если второй аргумент установлен в 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;
  });
});

Параметры

вызываемая функция $formatter необязательно null
Вызываемая функция форматирования.
boolean|число $mode необязательно 0
Указывает, нужно ли перезаписать, добавить или вставить форматировщик.

Возвращает


$this|массив

getIterator()source public

getIterator( )

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

Возвращает

Итератор

getOptions()source public

getOptions( )

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

Пример:

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

Возвращает

массив

См. также

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


isEagerLoaded()source public

isEagerLoaded( )

Возвращает текущее значение настроенного запроса _eagerLoaded.

Возвращает

boolean

mapReduce()source public

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

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

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

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

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

Параметры

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

Возвращает


$this|массив

См. также

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

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( )

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

Возвращает

массив

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

defaultTypes()source public

defaultTypes( array $types null )

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

Устарело

3.4.0 Используйте setDefaultTypes()/getDefaultTypes() вместо этого.

Параметры

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

Возвращает


$this|массив

getDefaultTypes()source public

getDefaultTypes( )

Получает типы по умолчанию текущей карты типов.

Возвращает

массив

getTypeMap()source public

getTypeMap( )

Возвращает существующую карту типов.

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

Cake\Database\TypeMap

setDefaultTypes()source public

setDefaultTypes( array $types )

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

Параметры

массив $types
Массив типов для установки.

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


$this

setTypeMap()source public

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

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

Параметры

массив|Cake\Database\TypeMap $typeMap
Создаёт карту типов, если это массив, иначе устанавливает заданную карту типов.

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


$this

typeMap()source public

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

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

Устаревший метод

3.4.0 Используйте setTypeMap()/getTypeMap() вместо него.

Параметры

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

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


$this|\Cake\Database\TypeMap

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

append()source public

append( array|Traversable $items )

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

Параметры

массив|объект, реализующий итерируемый интерфейс $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 )

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

Параметры

строка|вызов $field

Возвращает

целое число

each()source public

each( callable $c )

Передает каждый результат запроса в вызываемую функцию.

Параметры

вызов $c

Возвращает

Cake\Collection\CollectionInterface

every()source public

every( callable $c )

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

Параметры

вызов $c

Возвращает

логическое значение

extract()source public

extract( $field )

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

Параметры

$field

Возвращает

Cake\Collection\CollectionInterface

filter()source public

filter( callable $c )

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface

groupBy()source public

groupBy( string|callable $field )

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

Параметры

строка|вызов $field

Возвращает

Cake\Collection\CollectionInterface

indexBy()source public

indexBy( string|callable $field )

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

Параметры

строка|вызов $field

Возвращает

Cake\Collection\CollectionInterface

isEmpty()source public

isEmpty( )

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

Возвращает

логическое значение

last()source public

last( )

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

Возвращает

смешанный тип

map()source public

map( callable $c )

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

Параметры

вызов $c

Возвращает

Cake\Collection\CollectionInterface

max()source public

max( $field , $type )

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

Параметры

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

Возвращает

смешанный тип

min()source public

min( $field , $type )

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

Параметры

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

Возвращает

смешанный тип

nest()source public

nest( $k , $p , $n )

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

Параметры

$k
$p
$n необязательно

Возвращает

Cake\Collection\CollectionInterface

reduce()source public

reduce( callable $c , $zero )

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

Параметры

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

Возвращает

смешанный тип

reject()source public

reject( callable $c )

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

Параметры

вызов $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 )

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

Параметры

целое число $howMany

Возвращает

Cake\Collection\CollectionInterface

some()source public

some( callable $c )

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

Параметры

вызов $c

Возвращает

логическое значение

stopWhen()source public

stopWhen( callable $c )

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

Параметры

вызов $c

Возвращает

Cake\Collection\CollectionInterface

sumOf()source public

sumOf( string|callable $field )

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

Параметры

строка|вызов $field

Возвращает

число с плавающей точкой

take()source public

take( $size , $from )

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface

toArray()source public

toArray( )

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

Возвращает

массив

Реализация

Cake\Datasource\QueryInterface::toArray()

toList()source public

toList( )

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

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

массив

zip()source public

zip( array|Traversable $c )

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

Параметры

массив|Проходимый $c

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

Cake\Collection\CollectionInterface

zipWith()source public

zipWith( $collections , callable $callable )

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

Параметры

$collections
вызываемый $callable

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

Cake\Collection\CollectionInterface

Подробности свойств

$_autoFieldssource

protected логическое

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

$_beforeFindFiredsource

protected логическое

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

false

$_countersource

protected вызываемый

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

$_eagerLoadersource

protected Cake\ORM\EagerLoader

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

$_hasFieldssource

protected логическое

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

$_hydratesource

protected логическое

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

true

$_resultsCountsource

protected целое число|null

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

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

© 2005–2017 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/3.4/class-Cake.ORM.Query.html

Spec-Zone.ru

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