Phalcon\Mvc\Model\Query
Класс Phalcon\Mvc\Model\Query
Реализует Phalcon\Mvc\Model\QueryInterface, Phalcon\Di\InjectionAwareInterface
Этот класс принимает промежуточное представление 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;
Получает соединение записи из модели, если внутри объекта запроса нет транзакции