Класс Phalcon\Mvc\Model\Query

Реализует Phalcon\Mvc\Model\QueryInterface, Phalcon\Di\InjectionAwareInterface

Source on GitHub

Этот класс принимает промежуточное представление PHQL и выполняет его.

$phql = "SELECT c.price*0.16 AS taxes, c.* FROM Cars AS c JOIN Brands AS b
         WHERE b.name = :name: ORDER BY c.name";

$result = $manager->executeQuery(
    $phql,
    [
        "name" => "Lamborghini",
    ]
);

foreach ($result as $row) {
    echo "Name: ",  $row->cars->name, "\n";
    echo "Price: ", $row->cars->price, "\n";
    echo "Taxes: ", $row->taxes, "\n";
}

// with transaction
use Phalcon\Mvc\Model\Query;
use Phalcon\Mvc\Model\Transaction;

// $di needs to have the service "db" registered for this to work
$di = Phalcon\Di\FactoryDefault::getDefault();

$phql = 'SELECT FROM robot';

$myTransaction = new Transaction($di);
$myTransaction->begin();

$newRobot = new Robot();
$newRobot->setTransaction($myTransaction);
$newRobot->type = "mechanical";
$newRobot->name = "Astro Boy";
$newRobot->year = 1952;
$newRobot->save();

$queryWithTransaction = new Query($phql, $di);
$queryWithTransaction->setTransaction($myTransaction);

$resultWithEntries = $queryWithTransaction->execute();

$queryWithOutTransaction = new Query($phql, $di);
$resultWithOutEntries = $queryWithTransaction->execute();

 

Константы

const TYPE_DELETE = 303;
const TYPE_INSERT = 306;
const TYPE_SELECT = 309;
const TYPE_UPDATE = 300;

Свойства

//
protected ast;

//
protected bindParams;

//
protected bindTypes;

//
protected cache;

//
protected cacheOptions;

//
protected container;

//
protected enableImplicitJoins;

//
protected intermediate;

//
protected manager;

//
protected metaData;

//
protected models;

//
protected modelsInstances;

//
protected nestingLevel = -1;

//
protected phql;

//
protected sharedLock;

//
protected sqlAliases;

//
protected sqlAliasesModels;

//
protected sqlAliasesModelsInstances;

//
protected sqlColumnAliases;

//
protected sqlModelsAliases;

//
protected type;

//
protected uniqueRow;

//
static protected _irPhqlCache;

/**
 * Интерфейс транзакций, чтобы запрос мог переносить транзакцию вокруг 
 * пакетных обновлений и промежуточных выборок в рамках транзакции.
 *  Однако если модель получила набор транзакций внутри, она будет 
 * использовать локальную транзакцию вместо этой
 */
protected _transaction;

 

Методы

public function __construct( string $phql = null, DiInterface $container = null, array $options = [] );

Phalcon\Mvc\Model\Query конструктор

public function cache( array $cacheOptions ): QueryInterface;

Устанавливает параметры кэша запроса

public static function clean(): void;

Уничтожает внутренний кэш PHQL

public function execute( array $bindParams = [], array $bindTypes = [] );

Выполняет проанализированную инструкцию PHQL

public function getBindParams(): array;

Возвращает параметры привязки по умолчанию

public function getBindTypes(): array;

Возвращает типы привязки по умолчанию

public function getCache(): AdapterInterface;

Возвращает текущий экземпляр внутреннего кэша

public function getCacheOptions(): array;

Возвращает текущие параметры кэша

public function getDI(): DiInterface;

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

public function getIntermediate(): array;

Возвращает промежуточное представление инструкции PHQL

public function getSingleResult( array $bindParams = [], array $bindTypes = [] ): ModelInterface;

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

public function getSql(): array;

Возвращает SQL, создаваемый внутренним PHQL (работает только в операторах SELECT)

public function getType(): int;

Получает тип выполняемой инструкции PHQL

public function getUniqueRow(): bool;

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

public function get_transaction()

public function parse(): array;

Анализирует промежуточный код, созданный Phalcon\Mvc\Model\Query\Lang, генерирующий другое промежуточное представление, которое может быть выполнено Phalcon\Mvc\Model\Query

public function setBindParams( array $bindParams, bool $merge = bool ): QueryInterface;

Задает параметры привязки по умолчанию

public function setBindTypes( array $bindTypes, bool $merge = bool ): QueryInterface;

Задает параметры привязки по умолчанию

public function setDI( DiInterface $container ): void;

Устанавливает контейнер впрыска зависимости

public function setIntermediate( array $intermediate ): QueryInterface;

Позволяет установить IR для выполнения

public function setSharedLock( bool $sharedLock = bool ): QueryInterface;

Установить общий пункт блокировку

public function setTransaction( TransactionInterface $transaction ): QueryInterface;

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

public function setType( int $type ): QueryInterface;

Устанавливает тип выполняемой инструкции PHQL

public function setUniqueRow( bool $uniqueRow ): QueryInterface;

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

final protected function _executeDelete( array $intermediate, array $bindParams, array $bindTypes ): StatusInterface;

 Выполнение промежуточного представления DELETE, создающего Phalcon\Mvc\Model\Query\Status

final protected function _executeInsert( array $intermediate, array $bindParams, array $bindTypes ): StatusInterface;

Executes the посредничавшие INSERT representation producing в Phalcon\Mvc\Model\Query\Status

final protected function _executeSelect( array $intermediate, array $bindParams, array $bindTypes, bool $simulate = bool ): ResultsetInterface | array;

Выполнение промежуточного представления SELECT, создающего набор результатов Phalcon\Mvc\Model

final protected function _executeUpdate( array $intermediate, array $bindParams, array $bindTypes ): StatusInterface;

Выполняет обновление промежуточное представление, производя в Phalcon\Mvc\Model\Query\Status

final protected function _getCallArgument( array $argument ): array;

Разрешает выражение в одном аргументе вызова

final protected function _getCaseExpression( array $expr ): array;

Разрешает выражение в одном аргументе вызова

final protected function _getExpression( array $expr, bool $quoting = bool ): string;

Разрешает выражение из промежуточного кода в строку

final protected function _getFunctionCall( array $expr ): array;

Решает выражение в единственном аргументе требования

final protected function _getGroupClause( array $group ): array;

Возвращает пункт обработки инструкции SELECT

final protected function _getJoin( ManagerInterface $manager, array $join ): array;

Разрешает предложение JOIN, проверяющее наличие связанных моделей

final protected function _getJoinType( array $join ): string;

Разрешает тип JOIN

final protected function _getJoins( array $select ): array;

Обрабатывает JOIN в запросе, возвращая внутреннее представление для диалекта базы данных

final protected function _getLimitClause( array $limitClause ): array;

Возвращает обработанное предложение лимита для инструкции SELECT

final protected function _getMultiJoin( string $joinType, mixed $joinSource, string $modelAlias, string $joinAlias, RelationInterface $relation ): array;

Разрешение соединений с участием отношений "многие ко многим"

final protected function _getOrderClause( mixed $order ): array;

Возвращает обработанное предложение ORDER для инструкции SELECT

final protected function _getQualified( array $expr ): array;

Заменяет имя модели своим исходным именем в выражении с определенным именем

final protected function _getRelatedRecords( ModelInterface $model, array $intermediate, array $bindParams, array $bindTypes ): ResultsetInterface;

Запрос записей, для которых будет выполнена операция UPDATE/DELETE

final protected function _getSelectColumn( array $column ): array;

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

final protected function _getSingleJoin( string $joinType, mixed $joinSource, string $modelAlias, string $joinAlias, RelationInterface $relation ): array;

Соединения твердости, включающие имеет один / принадлежит / имеет много отношения

final protected function _getTable( ManagerInterface $manager, array $qualifiedName );

Разрешает таблицу в операторе SELECT, проверяя, существует ли модель

final protected function _prepareDelete(): array;

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

final protected function _prepareInsert(): array;

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

final protected function _prepareSelect( mixed $ast = null, bool $merge = bool ): array;

Анализирует промежуточный код SELECT и создает массив для последующего выполнения

final protected function _prepareUpdate(): array;

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

protected function getReadConnection( ModelInterface $model, array $intermediate = null, array $bindParams = [], array $bindTypes = [] ): AdapterInterface;

Получает соединение чтения из модели, если в объекте запроса не установлена ​​транзакция

protected function getWriteConnection( ModelInterface $model, array $intermediate = null, array $bindParams = [], array $bindTypes = [] ): AdapterInterface;

Получает соединение записи из модели, если внутри объекта запроса нет транзакции