Spec-Zone.ru › CakePHP 3.3

Класс 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\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
    Значение COUNT(*) для запроса.

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

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

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

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

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

  • _addAssociationsToTypeMap() protected

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

  • _addDefaultFields() protected

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

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

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

  • _execute() protected

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • matching() public

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

  • notMatching() public

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

  • select() public

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

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

Method Detail

__call()source public

__call( $method , $arguments )

Исключения

BadMethodCallException
если метод вызывается для запроса, отличного от select

__clone()source public

__clone( )

Зацепка для клонирования объекта.

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

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

Cake\Database\Query::__clone()

__construct()source public

__construct( Cake\Datasource\ConnectionInterface $connection , Cake\ORM\Table $table )

Конструктор

Параметры

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

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

Cake\Database\Query::__construct()

__debugInfo()source public

__debugInfo( )

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

Возвращает

array

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

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

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

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

_addDefaultFields()source protected

_addDefaultFields( )

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

_addDefaultSelectTypes()source protected

_addDefaultSelectTypes( )

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

_decorateResults()source protected

_decorateResults( Traversable $result )

Декорирует итератор результатов с помощью подпрограмм MapReduce и форматировщиков

Parameters

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

Returns

Cake\Datasource\ResultSetInterface

_dirty()source protected

_dirty( )

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

Overrides

Cake\Database\Query::_dirty()

_execute()source protected

_execute( )

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

Returns

Cake\ORM\ResultSet

_performCount()source protected

_performCount( )

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

Returns

integer

_transformQuery()source protected

_transformQuery( )

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

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

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

See

\Cake\Database\Query::execute()

addDefaultTypes()source public

addDefaultTypes( Cake\ORM\Table $table )

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

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

Parameters

Cake\ORM\Table $table
Таблица, из которой нужно извлечь типы

Returns


$this

all()source public

all( )

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

Returns

Cake\Datasource\ResultSetInterface

Throws

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

Implementation of

Cake\Datasource\QueryInterface::all()

applyOptions()source public

applyOptions( array $options )

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

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

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

Example:

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

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

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

Parameters

array $options
Список предложений запроса для применения новых частей.

Returns


$this

Implementation of

Cake\Datasource\QueryInterface::applyOptions()

autoFields()source public

autoFields( boolean|null $value null )

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

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

Parameters

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

Returns

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

cache()source public

cache( $key , $config 'default' )

Returns


$this

Throws

RuntimeException
Когда вы пытаетесь кэшировать не-SELECT запрос.

cleanCopy()source public

cleanCopy( )

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

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

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

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

Returns

Cake\ORM\Query

contain()source public

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

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

Example:

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

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

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

Example:

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

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

Example:

$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: Finder, который нужно использовать при загрузке связанных записей. Либо имя finder как строка, либо массив для определения параметров, которые нужно передать в finder.
  • queryBuilder: Эквивалентно передаче вызываемого объекта вместо массива параметров.

Example:

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

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

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

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

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

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

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

Parameters

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

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

Returns

array|Cake\ORM\Query
$this

count()source public

count( )

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

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

Returns

integer

Implementation of

Cake\Datasource\QueryInterface::count()

counter()source public

counter( callable|null $counter )

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

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

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

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

Parameters

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

Returns


$this

delete()source public

delete( string|null $table null )

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

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

Параметры

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

Возвращает


$this

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

Cake\Database\Query::delete()

eagerLoader()source public

eagerLoader( Cake\ORM\EagerLoader $instance null )

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

Параметры

Cake\ORM\EagerLoader $instance optional null

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

Возвращает

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

find()source public

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

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

Параметры

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

Возвращает


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

См.

\Cake\ORM\Table::find()

Реализация

Cake\Datasource\QueryInterface::find()

hydrate()source public

hydrate( boolean|null $enable null )

Переключение гидратации сущностей.

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

Параметры

boolean|null $enable optional null

Используйте логическое значение для установки режима гидратации. 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 optional null

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

Возвращает


$this

См.

\Cake\ORM\Query::matching()

insert()source public

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

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

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

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

Параметры

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

Возвращает


$this

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

RuntimeException
Когда нет столбцов.

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

Cake\Database\Query::insert()

jsonSerialize()source public

jsonSerialize( )

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

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

Возвращает

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

Реализация

JsonSerializable::jsonSerialize()

leftJoinWith()source public

leftJoinWith( string $assoc , callable $builder null )

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

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

Пример:

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

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

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

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

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

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

Пример:

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

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

Параметры

string $assoc
Ассоциация для соединения.
callable $builder optional 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 optional 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 optional 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 optional []

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

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

Возвращает


$this

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

Cake\Database\Query::select()

sql()source public

sql( Cake\Database\ValueBinder $binder null )

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

Parameters

Cake\Database\ValueBinder $binder optional null

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

Returns

string

Overrides

Cake\Database\Query::sql()

triggerBeforeFind()source public

triggerBeforeFind( )

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

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

update()source public

update( string|null $table null )

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

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

Parameters

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

Returns


$this

Overrides

Cake\Database\Query::update()

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

__toString()source public

__toString( )

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

Returns

string

_conjugate()source protected

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

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

Parameters

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

_decorateStatement()source protected

_decorateStatement( Cake\Database\StatementInterface $statement )

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

Parameters

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

Returns

Cake\Database\Statement\CallbackStatement

_makeJoin()source protected

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

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

Parameters

string|array $table
Таблица для соединения
string|array|Cake\Database\ExpressionInterface $conditions

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

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

Returns

array

andHaving()source public

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

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

Parameters

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

Returns


$this

See

\Cake\Database\Query::andWhere()

andWhere()source public

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

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

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

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

Примеры:

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

Выведет:

WHERE title = 'Hello World' AND author_id = 1

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

Выведет:

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

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

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

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

Parameters

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

Returns


$this

See

\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 заполнителя типа int. При использовании именованных заполнителей этот метод требует, чтобы заполнители включали : например :value.

Parameters

string|integer $param

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

mixed $value
Значение, которое нужно связать
string|integer $type optional 'string'

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

Returns


$this

bufferResults()source public

bufferResults( boolean|null $enable null )

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

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

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

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

Parameters

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

Returns

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

Parameters

string $name
имя предложения, которое нужно вернуть

Returns

mixed

connection()source public

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

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

Parameters

Cake\Datasource\ConnectionInterface|null $connection optional null
instance

Returns


$this|\Cake\Datasource\ConnectionInterface

decorateResults()source public

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

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

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

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

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

Example

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

Parameters

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

Returns


$this

distinct()source public

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

Добавляет к запросу предложение DISTINCT для удаления дубликатов из результирующего набора. Это предложение можно использовать только для инструкций select.

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

Examples:

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

Parameters

array|Cake\Database\ExpressionInterface|string|boolean $on optional []

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

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

Returns


$this

epilog()source public

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

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

Examples:

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

Parameters

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

Returns


$this

execute()source public

execute( )

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

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

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

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

Returns

Cake\Database\StatementInterface

from()source public

from( array|string $tables [] , boolean $overwrite false )

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

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

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

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

Examples:

$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

Parameters

array|string $tables optional []

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

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

Returns


$this

func()source public

func( )

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

Example:

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

Returns

Cake\Database\FunctionsBuilder

getIterator()source public

getIterator( )

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

Returns

Iterator

Implementation of

IteratorAggregate::getIterator()

group()source public

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

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

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

Examples:

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

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

Parameters

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

Returns


$this

having()source public

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

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

Parameters

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

Returns


$this

See

\Cake\Database\Query::where()

innerJoin()source public

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

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

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

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

Parameters

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

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

array $types optional []

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

Returns


$this

into()source public

into( string $table )

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

Parameters

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

Returns


$this

join()source public

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

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

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

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

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

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

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

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

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

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

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

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

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

Перезапись соединений

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

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

Параметры

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

Возвращает


$this

См. также

Cake\Database\Type

leftJoin()source public

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

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

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

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

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

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

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

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

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

Параметры

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

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

array $types optional []

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

Возвращает


$this

limit()source public

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

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

Примеры

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

Параметры

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

Возвращает


$this

modifier()source public

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

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

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

Пример:

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

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

Параметры

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

Возвращает


$this

newExpr()source public

newExpr( mixed $rawExpression null )

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

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

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

Параметры

mixed $rawExpression optional null
Строка, массив или что-либо еще, что вы хотите обернуть в объект выражения

Возвращает

Cake\Database\Expression\QueryExpression

offset()source public

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

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

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

Примеры

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

Параметры

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

Возвращает


$this

orHaving()source public

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

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

Параметры

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

Возвращает


$this

См. также

\Cake\Database\Query::orWhere()

orWhere()source public

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

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

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

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

Примеры:

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

Приведет к:

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

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

Выдаст:

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

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

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

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

Параметры

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

Возвращает


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

Параметры

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

Возвращает


$this

orderAsc()source public

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

Добавить предложение ORDER BY с направлением ASC.

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

Parameters

string|Cake\Database\Expression\QueryExpression $field
Поле для сортировки.
boolean $overwrite optional false
Сбрасывать ли предложения сортировки.

Returns


$this

orderDesc()source public

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

Добавить предложение ORDER BY с направлением DESC.

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

Parameters

string|Cake\Database\Expression\QueryExpression $field
Поле для сортировки.
boolean $overwrite optional false
Сбрасывать ли предложения сортировки.

Returns


$this

page()source public

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

Установить номер страницы результатов.

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

Нумерация страниц начинается с 1.

Parameters

integer $num
Номер нужной страницы.
integer|null $limit optional null

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

Returns


$this

removeJoin()source public

removeJoin( string $name )

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

Полезно, когда вы переопределяете соединения или хотите изменить порядок предложений соединения.

Parameters

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

Returns


$this

rightJoin()source public

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

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

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

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

Parameters

string|array $table
Таблица для соединения.
string|array|Cake\Database\ExpressionInterface $conditions optional []

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

array $types optional []

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

Returns


$this

selectTypeMap()source public

selectTypeMap( Cake\Database\TypeMap $typeMap null )

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

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

Parameters

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

Returns


$this|\Cake\Database\TypeMap

set()source public

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

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

Examples

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

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

Parameters

string|array|callable|Cake\Database\Expression\QueryExpression $key

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

mixed $value optional null

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

array $types optional []
Типы столбцов для обработки данных.

Returns


$this

traverse()source public

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

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

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

Example:

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

Parameters

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

Returns


$this

Implementation of

Cake\Database\ExpressionInterface::traverse()

traverseExpressions()source public

traverseExpressions( callable $callback )

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

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

Parameters

callable $callback

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

Returns


$this|null

type()source public

type( )

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

Returns

string

union()source public

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

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

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

Examples

$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

Parameters

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

Returns


$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

Parameters

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

Returns


$this

valueBinder()source public

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

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

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

Parameters

Cake\Database\ValueBinder|null $binder optional null

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

Returns


$this|\Cake\Database\ValueBinder

values()source public

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

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

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

Parameters

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

Returns


$this

Throws

Cake\Database\Exception

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


where()source public

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

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

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

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

Условия с использованием операторов:

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

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

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

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

Вложение условий с помощью союзов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Parameters

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

Returns


$this

See

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

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

_decoratorClass()source protected

_decoratorClass( )

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

Returns

string

aliasField()source public

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

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

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

Parameters

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

Returns

array

aliasFields()source public

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

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

Parameters

array $fields
Поля для псевдонимов
string|null $defaultAlias optional null
Псевдоним по умолчанию

Returns

array

eagerLoaded()source public

eagerLoaded( boolean|null $value null )

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

Parameters

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

Returns


$this|\Cake\ORM\Query

first()source public

first( )

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

Example:

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

Returns

mixed
первый результат из ResultSet

firstOrFail()source public

firstOrFail( )

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

Returns

mixed
Первый результат из ResultSet.

Throws

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

formatResults()source public

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

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

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

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

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

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

Example:

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

Parameters

callable $formatter optional null
Вызываемый объект форматирования.
boolean|integer $mode optional 0
Перезаписывать ли, добавлять или добавлять в начало средство форматирования.

Returns


$this|array

getIterator()source public

getIterator( )

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

Returns

Iterator

getOptions()source public

getOptions( )

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

Example:

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

Returns

array

See

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


mapReduce()source public

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

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

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

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

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

Параметры

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

Возвращает


$this|array

См.

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

repository()source public

repository( Cake\Datasource\RepositoryInterface $table null )

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

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

Параметры

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

Возвращает

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

setResult()source public

setResult( Cake\Datasource\ResultSetInterface $results )

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

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

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

Параметры

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

Возвращает


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

toArray()source public

toArray( )

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

Возвращает

array

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

defaultTypes()source public

defaultTypes( array $types null )

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

Параметры

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

Возвращает


$this|array

typeMap()source public

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

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

Параметры

array|Cake\Database\TypeMap|null $typeMap optional null
Создает TypeMap, если массив, в противном случае устанавливает заданный TypeMap

Возвращает


$this|\Cake\Database\TypeMap

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

append()source public

append( array|Traversable $items )

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

Параметры

array|Traversable $items

Возвращает

Cake\Collection\CollectionInterface

chunk()source public

chunk( $size )

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

Параметры

$size

Возвращает

Cake\Collection\CollectionInterface

combine()source public

combine( $k , $v , $g )

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

Параметры

$k
$v
$g optional

Возвращает

Cake\Collection\CollectionInterface

countBy()source public

countBy( string|callable $field )

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

Параметры

string|callable $field

Возвращает

integer

each()source public

each( callable $c )

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

Параметры

callable $c

Возвращает

Cake\Collection\CollectionInterface

every()source public

every( callable $c )

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

Параметры

callable $c

Возвращает

boolean

extract()source public

extract( $field )

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

Параметры

$field

Возвращает

Cake\Collection\CollectionInterface

filter()source public

filter( callable $c )

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

Параметры

callable $c optional

Возвращает

Cake\Collection\CollectionInterface

groupBy()source public

groupBy( string|callable $field )

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

Параметры

string|callable $field

Возвращает

Cake\Collection\CollectionInterface

indexBy()source public

indexBy( string|callable $field )

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

Параметры

string|callable $field

Возвращает

Cake\Collection\CollectionInterface

isEmpty()source public

isEmpty( )

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

Возвращает

boolean

last()source public

last( )

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

Возвращает

mixed

map()source public

map( callable $c )

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

Параметры

callable $c

Возвращает

Cake\Collection\CollectionInterface

max()source public

max( $field , $type )

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

Параметры

$field
$type optional

Возвращает

mixed

min()source public

min( $field , $type )

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

Параметры

$field
$type optional

Возвращает

mixed

nest()source public

nest( $k , $p , $n )

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

Параметры

$k
$p
$n optional

Возвращает

Cake\Collection\CollectionInterface

reduce()source public

reduce( callable $c , $zero )

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

Параметры

callable $c
$zero optional

Возвращает

mixed

reject()source public

reject( callable $c )

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

Параметры

callable $c

Возвращает

Cake\Collection\CollectionInterface

sample()source public

sample( $size )

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

Параметры

$size optional

Возвращает

Cake\Collection\CollectionInterface

shuffle()source public

shuffle( )

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

Возвращает

Cake\Collection\CollectionInterface

skip()source public

skip( integer $howMany )

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

Параметры

integer $howMany

Возвращает

Cake\Collection\CollectionInterface

some()source public

some( callable $c )

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

Параметры

callable $c

Возвращает

boolean

stopWhen()source public

stopWhen( callable $c )

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

Параметры

callable $c

Возвращает

Cake\Collection\CollectionInterface

sumOf()source public

sumOf( string|callable $field )

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

Параметры

string|callable $field

Возвращает

float

take()source public

take( $size , $from )

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

Параметры

$size optional
$from

Возвращает

Cake\Collection\CollectionInterface

toArray()source public

toArray( )

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

Возвращает

array

Реализация

Cake\Datasource\QueryInterface::toArray()

toList()source public

toList( )

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

Возвращает

array

zip()source public

zip( array|Traversable $c )

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

Параметры

array|Traversable $c

Возвращает

Cake\Collection\CollectionInterface

zipWith()source public

zipWith( $collections , callable $callable )

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

Параметры

$collections
callable $callable

Возвращает

Cake\Collection\CollectionInterface

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

$_autoFieldssource

protected boolean

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

$_beforeFindFiredsource

protected boolean

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

false

$_countersource

protected callable

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

$_eagerLoadersource

protected Cake\ORM\EagerLoader

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

$_hasFieldssource

protected boolean

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

$_hydratesource

protected boolean

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

true

$_resultsCountsource

protected integer

COUNT(*) для запроса.

При установке выполнение запроса 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.3/class-Cake.ORM.Query.html

Spec-Zone.ru

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