Spec-Zone.ru › CakePHP 4.3

Интерфейс QueryInterface

Основа для каждого объекта запроса

Пространство имен: Cake\Datasource

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

  • 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

    Установите объект таблицы по умолчанию, который будет использоваться этим запросом и сформирует предложение 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

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

Возвращает

array

aliasFields() public

aliasFields(array $fields, string|null $defaultAlias = null): array<string>

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

Параметры

array $fields

Поля для псевдонима

string|null $defaultAlias optional

Псевдоним по умолчанию

Возвращает

array<string>

all() public

all(): Cake\Datasource\ResultSetInterface

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

Вернет либо набор результатов через setResult(), либо выполнит этот запрос и вернет объект ResultSetDecorator, готовый для потоковой передачи результатов.

ResultSetDecorator — это обозреваемый объект, который реализует методы, найденные в Cake\Collection\Collection.

Возвращает

Cake\Datasource\ResultSetInterface

andWhere() public @method

andWhere(mixed $conditions, array $types = []): $this

Подключает любой ранее определенный набор условий к предоставленному списку с использованием оператора AND. {@see \Cake\Database\Query::andWhere()}

Параметры

$conditions
array $types optional

Возвращает

$this

applyOptions() public

applyOptions(array<string, mixed> $options): $this

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

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

Пример:

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

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

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

Параметры

array<string, mixed> $options

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

Возвращает

$this

count() public

count(): int

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

Возвращает

int

find() public

find(string $finder, array<string, mixed> $options = []): static

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

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

$repository->find('all')->find('recent');

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

Параметры

string $finder

Метод поиска для использования.

array<string, mixed> $options optional

Параметры для поиска.

Возвращает

static

first() public

first(): Cake\Datasource\EntityInterface|array|null

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

Пример:

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

Возвращает

Cake\Datasource\EntityInterface|array|null

firstOrFail() public @method

firstOrFail(): Cake\Datasource\EntityInterface|array

Получить первый результат из выполняемого запроса или выдать исключение. {@see \Cake\Database\Query::firstOrFail()}

Возвращает

Cake\Datasource\EntityInterface|array

getRepository() public

getRepository(): Cake\Datasource\RepositoryInterface|null

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

Возвращает

Cake\Datasource\RepositoryInterface|null

limit() public

limit(Cake\Database\ExpressionInterface|int|null $limit): $this

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

Примеры

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

Параметры

Cake\Database\ExpressionInterface|int|null $limit

количество записей, которые должны быть возвращены

Возвращает

$this

offset() public

offset(Cake\Database\ExpressionInterface|int|null $offset): $this

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

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

Примеры

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

Параметры

Cake\Database\ExpressionInterface|int|null $offset

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

Возвращает

$this

order() public

order(Cake\Database\ExpressionInterfaceClosure|array|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().

Параметры

Cake\Database\ExpressionInterfaceClosure|array|string $fields

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

bool $overwrite optional

нужно ли сбросить порядок со списком полей или нет

Возвращает

$this

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

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

Возвращает

$this

select() public

select(Cake\Database\ExpressionInterfaceCake\ORM\AssociationCake\ORM\Table|callable|array|string $fields, bool $overwrite = false): $this

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

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

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

Параметры

Cake\Database\ExpressionInterfaceCake\ORM\AssociationCake\ORM\Table|callable|array|string $fields

Поля.

bool $overwrite опционально

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

Возвращает

$this

toArray() public

toArray(): array

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

Возвращает

array

where() public

where(Closure|array|string|null $conditions = null, array<string, string> $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-инъекций. Если вы используете строковые условия, убедитесь, что ваши значения правильно заключены в кавычки. Наиболее безопасным вариантом является никогда не использовать строковые условия.

Параметры

Closure|array|string|null $conditions опционально

Условия для фильтрации.

array<string, string> $types опционально

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

bool $overwrite опционально

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

Возвращает

$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.3/interface-Cake.Datasource.QueryInterface.html

Spec-Zone.ru

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