Класс Query
Расширяет базовый класс Query, добавляя новые методы, связанные с загрузкой ассоциаций, автоматическим выбором полей, автоматическим преобразованием типов и обертыванием результатов в определённый итератор, который будет отвечать за гидратацию результатов при необходимости.
- Cake\Database\Query implements Cake\Database\ExpressionInterface, IteratorAggregate uses Cake\Database\TypeMapTrait
-
Cake\ORM\Query implements JsonSerializable, Cake\Datasource\QueryInterface uses Cake\Datasource\QueryTrait
См.: \Cake\Collection\CollectionInterface Для полного описания методов коллекции, поддерживаемых этим классом
Расположение: ORM/Query.php
Краткое описание констант
-
integer0 -
booleantrue -
integer1
Краткое описание свойств
-
$_autoFieldsprotectedbooleanОтслеживает, должен ли исходный запрос включать поля из таблицы верхнего уровня.
-
$_beforeFindFiredprotectedИстина, если событие beforeFind уже было вызвано для этого запросаboolean -
$_counterprotectedcallableФункция-обработчик, которая может использоваться для вычисления общего количества записей, которые найдёт этот запрос, когда не используется
limit -
$_eagerLoaderprotectedЭкземпляр класса, отвечающего за хранение содержаний ассоциаций и их раннюю загрузку, когда этот запрос выполняется.
-
$_hasFieldsprotectedbooleanПользователь выбрал поля до выполнения запроса; это используется для определения, нужно ли автоматически выбирать какие-либо поля.
-
$_hydrateprotectedНеобходимо ли гидратировать результаты в объекты сущностейboolean -
$_resultsCountprotectedЗначение COUNT(*) для запроса.integer|null
Унаследованные свойства
-
_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\QueryclearContain()source public
clearContain( )
Очищает содержащиеся ассоциации из текущего запроса.
Возвращает
$this
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\EagerLoaderhydrate()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() isAutoFieldsEnabled()source public
isAutoFieldsEnabled( )
Определяет, будет ли ORM автоматически добавлять поля.
По умолчанию вызов select() отключает автоматическое добавление полей. Вы можете снова включить автоматическое добавление полей с помощью enableAutoFields().
Возвращает
booleanТекущее значение.
isHydrationEnabled()source public
isHydrationEnabled( )
Возвращает текущий режим гидратации.
Возвращает
booleanjsonSerialize()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 - ассоциативный массив имён типов, используемых для привязки значений к запросу
_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 - тип объединения
Возвращает
arrayandHaving()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
$typesoptional [] - ассоциативный массив имен типов, используемых для привязки значений к запросу
Возвращает
$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
$typesoptional [] - ассоциативный массив имен типов, используемых для привязки значений к запросу
Возвращает
$this
См. также
\Cake\Database\Query::where()Cake\Database\Typebind()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
$typeoptional 'string' имя сопоставленного типа, используемое для преобразования при отправке в базу данных
Возвращает
$this
bufferResults()source public
bufferResults( boolean|null $enable null )
Включить/выключить буферизацию результатов.
При включении результаты, возвращаемые этим запросом, будут буферизованы. Это позволяет вам многократно итерировать результат набора или и кешировать, и итерировать его.
При выключении это потребует меньше памяти, так как полученные результаты не запоминаются для последующих итераций.
Если вызвана без аргументов, она вернёт, включена ли буферизация.
Устарело
3.4.0 Используйте enableBufferedResults()/isBufferedResultsEnabled() вместо этого.Параметры
- boolean|null
$enableoptional 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$connectionoptional 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
$overwriteoptional 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); Параметры
- 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\StatementInterfacefrom()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\FunctionsBuildergetConnection()source public
getConnection( )
Получает экземпляр подключения, который будет использоваться для выполнения и преобразования этого запроса.
Возвращаемое значение
Cake\Database\ConnectiongetIterator()source public
getIterator( )
Выполняет этот запрос и возвращает итератор результатов. Эта функция необходима для реализации интерфейса IteratorAggregate и позволяет итерировать запрос без необходимости вызова execute() вручную, делая его похожим на набор результатов, а не на сам запрос.
Возвращаемое значение
Cake\Database\StatementInterface|nullРеализация
IteratorAggregate::getIterator() getSelectTypeMap()source public
getSelectTypeMap( )
Получает класс TypeMap, в котором хранятся типы для каждого поля в операторе select.
Возвращаемое значение
Cake\Database\TypeMapgetValueBinder()source public
getValueBinder( )
Возвращает текущий используемый экземпляр ValueBinder.
ValueBinder отвечает за генерацию заполнитель запроса и временное связывание значений с этими заполнитель, чтобы они могли быть правильно переданы в объект оператора.
Возвращаемое значение
Cake\Database\ValueBindergroup()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
into()source public
into( string $table )
Установите имя таблицы для запросов вставки.
Параметры
- строка
$table - Имя таблицы, в которую нужно вставить данные.
Возвращаемое значение
$this
isBufferedResultsEnabled()source public
isBufferedResultsEnabled( )
Возвращает, включено/выключено ли буферирование результатов.
При включенном буферировании результаты, возвращаемые этим запросом, будут буферизованы. Это позволяет вам многократно итерировать результат, а также кэшировать и итерировать его.
При отключении буферирования потребление памяти уменьшится, так как полученные результаты не запоминаются для будущих итераций.
Возвращаемое значение
booleanjoin()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\TypeleftJoin()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\QueryExpressionoffset()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()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\Typeorder()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
$partsoptional [] - Операторы запроса для обхода
Возвращает
$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)
Возвращает
stringunion()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
$overwriteoptional 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
$overwriteoptional false - указывает, нужно ли сбросить список запросов для обработки или нет
Возвращает
$this
valueBinder()source public
valueBinder( Cake\Database\ValueBinder|null $binder null )
Возвращает текущий экземпляр ValueBinder. Если передано значение, оно будет установлено в качестве нового экземпляра для использования.
ValueBinder отвечает за создание заглушек запроса и временное сопоставление значений с этими заглушками, чтобы они могли быть правильно переданы объекту оператора.
Устарело
3.5.0 Используйте getValueBinder() для получения значения вместо этого.Параметры
- Cake\Database\ValueBinder|null
$binderoptional 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$conditionsoptional null - Условия для фильтрации.
- array
$typesoptional [] - ассоциативный массив имён типов, используемых для привязки значений к запросу
- boolean
$overwriteoptional false - указывает, нужно ли сбросить условия с переданным списком или нет
Возвращает
$this
См. также
Cake\Database\TypeCake\Database\Expression\QueryExpressionМетоды, используемые из Cake\Datasource\QueryTrait
_decoratorClass()source protected
_decoratorClass( )
Возвращает имя класса, используемого для декорирования результатов
Возвращает
stringaliasField()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.
Возвращает
booleanmapReduce()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\TypeMapsetDefaultTypes()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
Краткое описание магических методов
Подробности свойств
$_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