Интерфейс QueryInterface
Основа для каждого объекта запроса
Краткое описание методов
-
aliasField() public
Возвращает массив ключ => значение, представляющий одно алиасированное поле, которое можно передать непосредственно методу select(). Ключ будет содержать псевдоним, а значение — фактическое имя поля.
-
aliasFields() public
Выполняет
aliasField()для каждого поля в предоставленном списке и возвращает результат в виде одного массива. -
all() public
Извлечение результатов для этого запроса.
-
andWhere() public @method
Подключает любой ранее определённый набор условий к предоставленному списку с использованием оператора AND. {@see \Cake\Database\Query::andWhere()}
-
applyOptions() public
Заполняет или добавляет части текущих условий запроса с помощью массива. Это удобно для передачи всех условий запроса сразу. Массив опций принимает:
-
count() public
Возвращает общее количество результатов запроса.
-
find() public
Применение пользовательских нахождений к существующему объекту запроса.
-
first() public
Возвращает первый результат выполнения этого запроса. Если запрос ещё не выполнен, он установит ограничение до 1 для повышения производительности.
-
firstOrFail() public @method
Получение первого результата из выполняемого запроса или вызов исключения. {@see \Cake\Database\Query::firstOrFail()}
-
getRepository() public
Возвращает объект репозитория по умолчанию, который будет использоваться этим запросом, то есть репозиторий, который будет отображаться в предложении from.
-
limit() public
Устанавливает количество записей, которое должно быть извлечено из базы данных. Принимает целое число или объект выражения, вычисляющий целое число. В некоторых базах данных эта операция может не поддерживаться или потребовать преобразования запроса для ограничения размера набора результатов.
-
offset() public
Устанавливает количество записей, которые должны быть пропущены из исходного набора результатов. Это обычно используется для постраничного отображения больших результатов. Принимает целое число или объект выражения, вычисляющий целое число.
-
order() public
Добавляет одно или несколько полей, которые будут использоваться в предложении ORDER для этого запроса. Поля могут быть переданы в виде массива строк, массива объектов выражений, одного объекта выражения или одной строки.
-
page() public
Устанавливает страницу результатов, которую вы хотите.
-
repository() public
Устанавливает объект Table по умолчанию, который будет использоваться этим запросом и сформирует предложение
FROM. -
select() public
Добавляет поля, которые должны быть выбраны из источника данных.
-
toArray() public
Возвращает массивное представление результатов после выполнения запроса.
-
where() public
Добавляет условие или набор условий, которые будут использоваться в предложении WHERE для этого запроса. Условия могут быть выражены как массив полей в качестве ключей с операторами сравнения в нём, значения для массива будут использованы для сравнения поля с таким литералом. Наконец, условия могут быть выражены как одна строка или массив строк.
Краткое описание методов
aliasField() public
aliasField(string $field, string|null $alias = null): array
Возвращает массив ключ => значение, представляющий одно поле с псевдонимом, которое можно передать непосредственно в метод select(). Ключ будет содержать псевдоним, а значение — фактическое имя поля.
Если поле уже имеет псевдоним, оно не изменится. Если $alias не передан, будет использована таблица по умолчанию для этого запроса.
Параметры
-
string$field Поле для псевдонима
-
string|null$alias optional псевдоним, используемый для префикса поля
Возвращает
arrayaliasFields() public
aliasFields(array $fields, string|null $defaultAlias = null): string[]
Выполняет aliasField() для каждого поля в предоставленном списке и возвращает результат в одном массиве.
Параметры
-
array$fields Поля для псевдонима
-
string|null$defaultAlias optional Псевдоним по умолчанию
Возвращает
string[]all() public
all(): Cake\Datasource\ResultSetInterface
Получить результаты этого запроса.
Вернет либо набор результатов через setResult(), либо выполнит этот запрос и вернет объект ResultSetDecorator, готовый для потоковой передачи результатов.
ResultSetDecorator — это обозреваемый объект, который реализует методы, найденные в Cake\Collection\Collection.
Возвращает
Cake\Datasource\ResultSetInterfaceandWhere() public @method
andWhere(mixed $conditions, array $types = []): $this
Подключает любой ранее определенный набор условий к предоставленному списку, используя оператор AND. {@see \Cake\Database\Query::andWhere()}
Параметры
- $conditions
-
array$types optional
Возвращает
$thisapplyOptions() public
applyOptions(array $options): $this
Заполняет или добавляет части в текущие предложения запроса, используя массив. Это удобно для передачи всех предложений запроса сразу. Массив параметров принимает:
- fields: Сопоставляется с методом select
- conditions: Сопоставляется с методом where
- limit: Сопоставляется с методом limit
- order: Сопоставляется с методом order
- offset: Сопоставляется с методом offset
- group: Сопоставляется с методом group
- having: Сопоставляется с методом having
- contain: Сопоставляется с параметрами contain для eager loading
- 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)
Параметры
-
array$options Список предложений запроса для применения новых частей.
Возвращает
$thiscount() public
count(): int
Возвращает общее количество результатов для запроса.
Возвращает
intfind() public
find(string $finder, array $options = []): static
Применить пользовательские поиски к существующему объекту запроса.
Позволяет комбинировать пользовательские методы поиска и применять их друг к другу.
$repository->find('all')->find('recent'); Выше приведен пример наложения нескольких методов поиска на один запрос.
Параметры
-
string$finder Метод поиска для использования.
-
array$options optional Параметры для поиска.
Возвращает
staticfirst() public
first(): Cake\Datasource\EntityInterface|array|null
Возвращает первый результат выполнения этого запроса, если запрос не выполнялся ранее, он установит предложение limit на 1 для повышения производительности.
Пример:
$singleUser = $query->select(['id', 'username'])->first();
Возвращает
Cake\Datasource\EntityInterface|array|nullfirstOrFail() public @method
firstOrFail(): Cake\Datasource\EntityInterface|array
Получить первый результат из выполняемого запроса или выбросить исключение. {@see \Cake\Database\Query::firstOrFail()}
Возвращает
Cake\Datasource\EntityInterface|arraygetRepository() public
getRepository(): Cake\Datasource\RepositoryInterface|null
Возвращает объект репозитория по умолчанию, который будет использоваться этим запросом, то есть репозиторий, который будет отображаться в предложении from.
Возвращает
Cake\Datasource\RepositoryInterface|nulllimit() public
limit(intCake\Database\ExpressionInterface|null $num): $this
Устанавливает количество записей, которые должны быть получены из базы данных, принимает целое число или объект выражения, который вычисляется в целое число. В некоторых базах данных эта операция может не поддерживаться или потребует преобразования запроса для ограничения размера результирующего набора.
Примеры
$query->limit(10) // generates LIMIT 10 $query->limit($query->newExpr()->add(['1 + 1'])); // LIMIT (1 + 1)
Параметры
-
intCake\Database\ExpressionInterface|null$num количество записей, которые будут возвращены
Возвращает
$thisoffset() public
offset(intCake\Database\ExpressionInterface|null $num): $this
Устанавливает количество записей, которые должны быть пропущены из исходного результирующего набора. Это обычно используется для постраничной обработки больших результатов. Принимает целое число или объект выражения, который вычисляется в целое число.
В некоторых базах данных эта операция может не поддерживаться или потребует преобразования запроса для ограничения размера результирующего набора.
Примеры
$query->offset(10) // generates OFFSET 10 $query->offset($query->newExpr()->add(['1 + 1'])); // OFFSET (1 + 1)
Параметры
-
intCake\Database\ExpressionInterface|null$num количество записей, которые нужно пропустить
Возвращает
$thisorder() public
order(arrayCake\Database\ExpressionInterfaceClosure|string $fields, bool $overwrite = false): $this
Добавляет одно или несколько полей, которые будут использоваться в предложении ORDER для этого запроса. Поля могут быть переданы в виде массива строк, массива объектов выражений, одного выражения или одной строки.
Если передается массив, ключи будут использоваться в качестве самого поля, а значение будет представлять порядок, в котором это поле должно быть упорядочено. При многократном вызове с одними и теми же полями в качестве ключа последнее определение порядка будет иметь приоритет над другими.
По умолчанию эта функция будет добавлять любой переданный аргумент в список полей, которые нужно выбрать, если только второй аргумент не установлен в true.
Примеры:
$query->order(['title' => 'DESC', 'author_id' => 'ASC']);
Выдает:
ORDER BY title DESC, author_id ASC
$query
->order(['title' => $query->newExpr('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().
Параметры
-
arrayCake\Database\ExpressionInterfaceClosure|string$fields поля, которые будут добавлены в список
-
bool$overwrite optional необходимо ли сбросить порядок со списком полей или нет
Возвращает
$thispage() public
page(int $num, int|null $limit = null): $this
Установите нужную страницу результатов.
Этот метод обеспечивает более простой в использовании интерфейс для установки limit + offset в наборе записей, которые вы хотите получить в качестве результатов. Если пусто, limit будет по умолчанию установлен в существующее предложение limit, а если и оно пусто, то будет использоваться 25.
Страницы должны начинаться с 1.
Параметры
-
int$num Номер страницы, который вы хотите.
-
int|null$limit optional Количество строк, которые вы хотите на странице. Если null, будет использовано текущее предложение limit.
Возвращает
$thisВыбрасывает
InvalidArgumentExceptionЕсли номер страницы < 1.
repository() public
repository(Cake\Datasource\RepositoryInterface $repository): $this
Установите объект Table по умолчанию, который будет использоваться этим запросом и формировать предложение FROM.
Параметры
-
Cake\Datasource\RepositoryInterface$repository Объект репозитория по умолчанию для использования
Возвращает
$thisselect() public
select(array|string|callableCake\Database\ExpressionInterfaceCake\ORM\TableCake\ORM\Association $fields, bool $overwrite = false): $this
Добавляет поля для выбора из источника данных.
Вызов этой функции несколько раз добавит больше полей в список полей для выбора.
Если true передаётся во втором аргументе, все предыдущие выборки будут перезаписаны списком, переданным в первом аргументе.
Параметры
-
array|string|callableCake\Database\ExpressionInterfaceCake\ORM\TableCake\ORM\Association$fields Поля.
-
bool$overwrite optional необходимо ли сбросить поля переданным списком или нет
Возвращает
$thistoArray() public
toArray(): array
Возвращает массив, представляющий результаты после выполнения запроса.
Возвращает
arraywhere() public
where(string|arrayClosure|null $conditions = null, array $types = [], bool $overwrite = false): $this
Добавляет условие или набор условий, которые будут использоваться в предложении 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|arrayClosure|null$conditions optional Условия для фильтрации.
-
array$types optional ассоциативный массив имён типов, используемых для привязки значений к запросу
-
bool$overwrite optional необходимо ли сбросить условия переданным списком или нет
Возвращает
$this
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.2/interface-Cake.Datasource.QueryInterface.html