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;
Получает соединение записи из модели, если внутри объекта запроса нет транзакции