Skip to content

Phalcon db

NOTE

All classes are prefixed with Phalcon

Db\Adapter\AbstractAdapter

Abstract Source on GitHub

Base class for Phalcon\Db\Adapter adapters.

This class and its related classes provide a simple SQL database interface for Phalcon Framework. The Phalcon\Db is the basic class you use to connect your PHP application to an RDBMS. There is a different adapter class for each brand of RDBMS.

This component is intended to lower level database operations. If you want to interact with databases using higher level of abstraction use Phalcon\Mvc\Model.

Phalcon\Db\AbstractDb is an abstract class. You only can use it with a database adapter like Phalcon\Db\Adapter\Pdo

use Phalcon\Db;
use Phalcon\Db\Exception;
use Phalcon\Db\Adapter\Pdo\Mysql as MysqlConnection;

try {
    $connection = new MysqlConnection(
        [
            "host"     => "192.168.0.11",
            "username" => "sigma",
            "password" => "secret",
            "dbname"   => "blog",
            "port"     => "3306",
        ]
    );

    $result = $connection->query(
        "SELECT * FROM co_invoices LIMIT 5"
    );

    $result->setFetchMode(Enum::FETCH_NUM);

    while ($invoice = $result->fetch()) {
        print_r($invoice);
    }
} catch (Exception $e) {
    echo $e->getMessage(), PHP_EOL;
}

Uses Phalcon\Db\CheckInterface · Phalcon\Db\ColumnInterface · Phalcon\Db\DialectInterface · Phalcon\Db\Enum · Phalcon\Db\Exception · Phalcon\Db\Exceptions\CannotInsertWithoutData · Phalcon\Db\Exceptions\IncompleteBindTypes · Phalcon\Db\Exceptions\InvalidDialectClass · Phalcon\Db\Exceptions\InvalidWhereConditions · Phalcon\Db\Exceptions\NestedTransactionChangeBlocked · Phalcon\Db\Exceptions\SavepointsNotSupported · Phalcon\Db\Exceptions\TableMustHaveColumn · Phalcon\Db\Exceptions\UpdateFieldCountMismatch · Phalcon\Db\Index · Phalcon\Db\IndexInterface · Phalcon\Db\RawValue · Phalcon\Db\Reference · Phalcon\Db\ReferenceInterface · Phalcon\Events\EventsAwareInterface · Phalcon\Events\ManagerInterface · Phalcon\Support\Settings

Method Summary

public __construct( array $descriptor ) Phalcon\Db\Adapter constructor public bool addCheck(string $tableName,string $schemaName,CheckInterface $check) Adds a CHECK constraint to a table. MySQL 8.0.16+ and PostgreSQL public bool addColumn(string $tableName,string $schemaName,ColumnInterface $column) Adds a column to a table public bool addForeignKey(string $tableName,string $schemaName,ReferenceInterface $reference) Adds a foreign key to a table public bool addIndex(string $tableName,string $schemaName,IndexInterface $index) Adds an index to a table public bool addPrimaryKey(string $tableName,string $schemaName,IndexInterface $index) Adds a primary key to a table public bool createMaterializedView(string $viewName,array $definition,string $schemaName = null) Creates a materialized view (PostgreSQL only - MySQL and SQLite public bool createSavepoint( string $name ) Creates a new savepoint public bool createTable(string $tableName,string $schemaName,array $definition) Creates a table public bool createView(string $viewName,array $definition,string $schemaName = null) Creates a view public bool delete(mixed $table,string $whereCondition = null,array $placeholders = [],array $dataTypes = []) Deletes data from a table using custom RBDM SQL syntax public IndexInterface[] describeIndexes(string $table,string $schema = null) Lists table indexes public ReferenceInterface[] describeReferences(string $table,string $schema = null) Lists table references public bool dropCheck(string $tableName,string $schemaName,string $checkName) Drops a CHECK constraint from a table. SQLite throws. public bool dropColumn(string $tableName,string $schemaName,string $columnName) Drops a column from a table public bool dropForeignKey(string $tableName,string $schemaName,string $referenceName) Drops a foreign key from a table public bool dropIndex(string $tableName,string $schemaName,mixed $indexName) Drop an index from a table public bool dropMaterializedView(string $viewName,string $schemaName = null,bool $ifExists = true) Drops a materialized view (PostgreSQL only). public bool dropPrimaryKey(string $tableName,string $schemaName) Drops a table's primary key public bool dropTable(string $tableName,string $schemaName = null,bool $ifExists = true) Drops a table from a schema/database public bool dropView(string $viewName,string $schemaName = null,bool $ifExists = true) Drops a view public string escapeIdentifier( mixed $identifier ) Escapes a column/table/schema name public array fetchAll(string $sqlQuery,int $fetchMode = Enum::FETCH_ASSOC,array $bindParams = [],array $bindTypes = []) Dumps the complete result of a query into an array public string|bool fetchColumn(string $sqlQuery,array $placeholders = [],mixed $column = 0) Returns the n'th field of first row in a SQL query result public array fetchOne(string $sqlQuery,mixed $fetchMode = Enum::FETCH_ASSOC,array $bindParams = [],array $bindTypes = []) Returns the first row in a SQL query result public string forUpdate(string $sqlQuery,string $modifier = "") Returns a SQL modified with a FOR UPDATE clause. The optional public string getColumnDefinition( ColumnInterface $column ) Returns the SQL column definition from a column public string getColumnList( mixed $columnList ) Gets a list of columns public int getConnectionId() Gets the active connection unique identifier public RawValue getDefaultIdValue() Returns the default identity value to be inserted in an identity column public RawValue getDefaultValue() Returns the default value to make the RBDM use the default value declared public array getDescriptor() Return descriptor used to connect to the active database public DialectInterface getDialect() Returns internal dialect instance public string getDialectType() Name of the dialect used public ManagerInterface|null getEventsManager() Returns the internal event manager public string getNestedTransactionSavepointName() Returns the savepoint name to use for nested transactions public string getRealSQLStatement() Active SQL statement in the object without replace bound parameters public array getSQLBindTypes() Active SQL statement in the object public string getSQLStatement() Active SQL statement in the object public array getSQLVariables() Active SQL variables in the object public string getType() Type of database system the adapter is used for public bool insert(string $table,array $values,mixed $fields = null,mixed $dataTypes = null) Inserts data into a table using custom RDBMS SQL syntax public bool insertAsDict(string $table,mixed $data,mixed $dataTypes = null) Inserts data into a table using custom RBDM SQL syntax public bool isNestedTransactionsWithSavepoints() Returns if nested transactions should use savepoints public string limit(string $sqlQuery,mixed $number) Appends a LIMIT clause to $sqlQuery argument public array listTables( string $schemaName = null ) List all tables on a database public array listViews( string $schemaName = null ) List all views on a database public bool modifyColumn(string $tableName,string $schemaName,ColumnInterface $column,ColumnInterface $currentColumn = null) Modifies a table column based on a definition public string onConflictUpdate(string $sqlQuery,array $conflictColumns,array $updateColumns) Appends an ON CONFLICT (...) DO UPDATE SET col = excluded.col public bool refreshMaterializedView(string $viewName,string $schemaName = null,bool $concurrent = false) Refreshes a materialized view (PostgreSQL only). Pass public bool releaseSavepoint( string $name ) Releases given savepoint public string returning(string $sqlQuery,array $columns) Appends a RETURNING clause to an INSERT/UPDATE/DELETE SQL statement public bool rollbackSavepoint( string $name ) Rollbacks given savepoint public setDialect( DialectInterface $dialect ) Sets the dialect used to produce the SQL public void setEventsManager( ManagerInterface $eventsManager ) Sets the event manager public AdapterInterface setNestedTransactionsWithSavepoints( bool $nestedTransactionsWithSavepoints ) Set if nested transactions should use savepoints public void setup( array $options ) Enables/disables options in the Database component. public string sharedLock(string $sqlQuery,string $modifier = "") Returns a SQL modified with a shared-lock clause. The optional public bool supportSequences() Check whether the database system requires a sequence to produce public bool supportsDefaultValue() Check whether the database system support the DEFAULT public bool tableExists(string $tableName,string $schemaName = null) Generates SQL checking for the existence of a schema.table public array tableOptions(string $tableName,string $schemaName = null) Gets creation options from a table public bool update(string $table,mixed $fields,mixed $values,mixed $whereCondition = null,mixed $dataTypes = null) Updates data on a table using custom RBDM SQL syntax public bool updateAsDict(string $table,mixed $data,mixed $whereCondition = null,mixed $dataTypes = null) Updates data on a table using custom RBDM SQL syntax public bool useExplicitIdValue() Check whether the database system requires an explicit value for identity public bool viewExists(string $viewName,string $schemaName = null) Generates SQL checking for the existence of a schema.view

Properties

protected int $connectionConsecutive = 0 Connection ID
protected int $connectionId Active connection ID
protected array $descriptor = [] Descriptor used to connect to a database
protected DialectInterface $dialect Dialect instance
protected string $dialectType Name of the dialect used
protected ManagerInterface|null $eventsManager = null Event Manager
protected string $realSqlStatement The real SQL statement - what was executed
protected array $sqlBindTypes = [] Active SQL Bind Types
protected string $sqlStatement Active SQL Statement
protected array $sqlVariables = [] Active SQL bound parameter variables
protected int $transactionLevel = 0 Current transaction level
protected bool $transactionsWithSavepoints = false Whether the database supports transactions with save points
protected string $type Type of database system the adapter is used for

Methods

Public · 66

__construct()

public function __construct( array $descriptor );

Phalcon\Db\Adapter constructor

Note: the options key is forwarded to the static setup() method, which writes process-global settings affecting every connection in the process. See setup().

addCheck()

public function addCheck(
    string $tableName,
    string $schemaName,
    CheckInterface $check
): bool;

Adds a CHECK constraint to a table. MySQL 8.0.16+ and PostgreSQL issue ALTER TABLE ... ADD CONSTRAINT ... CHECK (...); SQLite throws.

addColumn()

public function addColumn(
    string $tableName,
    string $schemaName,
    ColumnInterface $column
): bool;

Adds a column to a table

addForeignKey()

public function addForeignKey(
    string $tableName,
    string $schemaName,
    ReferenceInterface $reference
): bool;

Adds a foreign key to a table

addIndex()

public function addIndex(
    string $tableName,
    string $schemaName,
    IndexInterface $index
): bool;

Adds an index to a table

addPrimaryKey()

public function addPrimaryKey(
    string $tableName,
    string $schemaName,
    IndexInterface $index
): bool;

Adds a primary key to a table

createMaterializedView()

public function createMaterializedView(
    string $viewName,
    array $definition,
    string $schemaName = null
): bool;

Creates a materialized view (PostgreSQL only - MySQL and SQLite throw via the dialect).

createSavepoint()

public function createSavepoint( string $name ): bool;

Creates a new savepoint

createTable()

public function createTable(
    string $tableName,
    string $schemaName,
    array $definition
): bool;

Creates a table

createView()

public function createView(
    string $viewName,
    array $definition,
    string $schemaName = null
): bool;

Creates a view

delete()

public function delete(
    mixed $table,
    string $whereCondition = null,
    array $placeholders = [],
    array $dataTypes = []
): bool;

Deletes data from a table using custom RBDM SQL syntax

// Deleting existing robot
$success = $connection->delete(
    "robots",
    "id = 101"
);

// Next SQL sentence is generated
DELETE FROM `robots` WHERE `id` = 101

Warning! If $whereCondition is string it not escaped.

describeIndexes()

public function describeIndexes(
    string $table,
    string $schema = null
): IndexInterface[];

Lists table indexes

print_r(
    $connection->describeIndexes("robots_parts")
);

This base implementation consumes the dialect's describeIndexes() SQL as FETCH_NUM rows by position: column index 2 is the index key name and column index 4 is the indexed column name. A custom dialect's describeIndexes() SQL must emit columns in that order, or a custom adapter must override this method. All bundled adapters except PostgreSQL override it.

describeReferences()

public function describeReferences(
    string $table,
    string $schema = null
): ReferenceInterface[];

Lists table references

print_r(
    $connection->describeReferences("robots_parts")
);

This base implementation consumes the dialect's describeReferences() SQL as FETCH_NUM rows by position: index 1 is the local column, index 2 the constraint name, index 3 the referenced schema, index 4 the referenced table, and index 5 the referenced column. A custom dialect's describeReferences() SQL must emit columns in that order, or a custom adapter must override this method. Every bundled adapter (MySQL, PostgreSQL, SQLite) overrides it, so this base implementation has no in-tree caller and effectively assumes the PostgreSQL row shape.

dropCheck()

public function dropCheck(
    string $tableName,
    string $schemaName,
    string $checkName
): bool;

Drops a CHECK constraint from a table. SQLite throws.

dropColumn()

public function dropColumn(
    string $tableName,
    string $schemaName,
    string $columnName
): bool;

Drops a column from a table

dropForeignKey()

public function dropForeignKey(
    string $tableName,
    string $schemaName,
    string $referenceName
): bool;

Drops a foreign key from a table

dropIndex()

public function dropIndex(
    string $tableName,
    string $schemaName,
    mixed $indexName
): bool;

Drop an index from a table

dropMaterializedView()

public function dropMaterializedView(
    string $viewName,
    string $schemaName = null,
    bool $ifExists = true
): bool;

Drops a materialized view (PostgreSQL only).

dropPrimaryKey()

public function dropPrimaryKey(
    string $tableName,
    string $schemaName
): bool;

Drops a table's primary key

dropTable()

public function dropTable(
    string $tableName,
    string $schemaName = null,
    bool $ifExists = true
): bool;

Drops a table from a schema/database

dropView()

public function dropView(
    string $viewName,
    string $schemaName = null,
    bool $ifExists = true
): bool;

Drops a view

escapeIdentifier()

public function escapeIdentifier( mixed $identifier ): string;

Escapes a column/table/schema name

$escapedTable = $connection->escapeIdentifier(
    "robots"
);

$escapedTable = $connection->escapeIdentifier(
    [
        "store",
        "robots",
    ]
);

fetchAll()

public function fetchAll(
    string $sqlQuery,
    int $fetchMode = Enum::FETCH_ASSOC,
    array $bindParams = [],
    array $bindTypes = []
): array;

Dumps the complete result of a query into an array

// Getting all robots with associative indexes only
$robots = $connection->fetchAll(
    "SELECT * FROM robots",
    \Phalcon\Db\Enum::FETCH_ASSOC
);

foreach ($robots as $robot) {
    print_r($robot);
}

 // Getting all robots that contains word "robot" withing the name
$robots = $connection->fetchAll(
    "SELECT * FROM robots WHERE name LIKE :name",
    \Phalcon\Db\Enum::FETCH_ASSOC,
    [
        "name" => "%robot%",
    ]
);
foreach($robots as $robot) {
    print_r($robot);
}

fetchColumn()

public function fetchColumn(
    string $sqlQuery,
    array $placeholders = [],
    mixed $column = 0
): string|bool;

Returns the n'th field of first row in a SQL query result

// Getting count of robots
$robotsCount = $connection->fetchColumn("SELECT count(*) FROM robots");
print_r($robotsCount);

// Getting name of last edited robot
$robot = $connection->fetchColumn(
    "SELECT id, name FROM robots ORDER BY modified DESC",
    1
);
print_r($robot);

fetchOne()

public function fetchOne(
    string $sqlQuery,
    mixed $fetchMode = Enum::FETCH_ASSOC,
    array $bindParams = [],
    array $bindTypes = []
): array;

Returns the first row in a SQL query result

// Getting first robot
$robot = $connection->fetchOne("SELECT * FROM robots");
print_r($robot);

// Getting first robot with associative indexes only
$robot = $connection->fetchOne(
    "SELECT * FROM robots",
    \Phalcon\Db\Enum::FETCH_ASSOC
);
print_r($robot);

forUpdate()

public function forUpdate(
    string $sqlQuery,
    string $modifier = ""
): string;

Returns a SQL modified with a FOR UPDATE clause. The optional modifier is passed straight to the dialect (use Dialect::LOCK_NOWAIT / Dialect::LOCK_SKIP_LOCKED / Dialect::LOCK_NONE).

getColumnDefinition()

public function getColumnDefinition( ColumnInterface $column ): string;

Returns the SQL column definition from a column

getColumnList()

public function getColumnList( mixed $columnList ): string;

Gets a list of columns

getConnectionId()

public function getConnectionId(): int;

Gets the active connection unique identifier

getDefaultIdValue()

public function getDefaultIdValue(): RawValue;

Returns the default identity value to be inserted in an identity column

// Inserting a new robot with a valid default value for the column 'id'
$success = $connection->insert(
    "robots",
    [
        $connection->getDefaultIdValue(),
        "Astro Boy",
        1952,
    ],
    [
        "id",
        "name",
        "year",
    ]
);

getDefaultValue()

public function getDefaultValue(): RawValue;

Returns the default value to make the RBDM use the default value declared in the table definition

// Inserting a new robot with a valid default value for the column 'year'
$success = $connection->insert(
    "robots",
    [
        "Astro Boy",
        $connection->getDefaultValue()
    ],
    [
        "name",
        "year",
    ]
);

@todo Return NULL if this is not supported by the adapter

getDescriptor()

public function getDescriptor(): array;

Return descriptor used to connect to the active database

getDialect()

public function getDialect(): DialectInterface;

Returns internal dialect instance

getDialectType()

public function getDialectType(): string;

Name of the dialect used

getEventsManager()

public function getEventsManager(): ManagerInterface|null;

Returns the internal event manager

getNestedTransactionSavepointName()

public function getNestedTransactionSavepointName(): string;

Returns the savepoint name to use for nested transactions

getRealSQLStatement()

public function getRealSQLStatement(): string;

Active SQL statement in the object without replace bound parameters

getSQLBindTypes()

public function getSQLBindTypes(): array;

Active SQL statement in the object

getSQLStatement()

public function getSQLStatement(): string;

Active SQL statement in the object

getSQLVariables()

public function getSQLVariables(): array;

Active SQL variables in the object

getType()

public function getType(): string;

Type of database system the adapter is used for

insert()

public function insert(
    string $table,
    array $values,
    mixed $fields = null,
    mixed $dataTypes = null
): bool;

Inserts data into a table using custom RDBMS SQL syntax

// Inserting a new robot
$success = $connection->insert(
    "robots",
    ["Astro Boy", 1952],
    ["name", "year"]
);

// Next SQL sentence is sent to the database system
INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952);

insertAsDict()

public function insertAsDict(
    string $table,
    mixed $data,
    mixed $dataTypes = null
): bool;

Inserts data into a table using custom RBDM SQL syntax

// Inserting a new robot
$success = $connection->insertAsDict(
    "robots",
    [
        "name" => "Astro Boy",
        "year" => 1952,
    ]
);

// Next SQL sentence is sent to the database system
INSERT INTO `robots` (`name`, `year`) VALUES ("Astro boy", 1952);

isNestedTransactionsWithSavepoints()

public function isNestedTransactionsWithSavepoints(): bool;

Returns if nested transactions should use savepoints

limit()

public function limit(
    string $sqlQuery,
    mixed $number
): string;

Appends a LIMIT clause to $sqlQuery argument

echo $connection->limit("SELECT * FROM robots", 5);

listTables()

public function listTables( string $schemaName = null ): array;

List all tables on a database

print_r(
    $connection->listTables("blog")
);

listViews()

public function listViews( string $schemaName = null ): array;

List all views on a database

print_r(
    $connection->listViews("blog")
);

modifyColumn()

public function modifyColumn(
    string $tableName,
    string $schemaName,
    ColumnInterface $column,
    ColumnInterface $currentColumn = null
): bool;

Modifies a table column based on a definition

onConflictUpdate()

public function onConflictUpdate(
    string $sqlQuery,
    array $conflictColumns,
    array $updateColumns
): string;

Appends an ON CONFLICT (...) DO UPDATE SET col = excluded.col upsert clause to the supplied INSERT statement. Supported by PostgreSQL and SQLite 3.24+; MySQL throws.

refreshMaterializedView()

public function refreshMaterializedView(
    string $viewName,
    string $schemaName = null,
    bool $concurrent = false
): bool;

Refreshes a materialized view (PostgreSQL only). Pass concurrent = true for non-blocking refresh.

releaseSavepoint()

public function releaseSavepoint( string $name ): bool;

Releases given savepoint

returning()

public function returning(
    string $sqlQuery,
    array $columns
): string;

Appends a RETURNING clause to an INSERT/UPDATE/DELETE SQL statement and returns the modified SQL. Supported by PostgreSQL and SQLite 3.35+; MySQL throws (no RETURNING construct). Pass ["*"] for RETURNING *.

rollbackSavepoint()

public function rollbackSavepoint( string $name ): bool;

Rollbacks given savepoint

setDialect()

public function setDialect( DialectInterface $dialect );

Sets the dialect used to produce the SQL

setEventsManager()

public function setEventsManager( ManagerInterface $eventsManager ): void;

Sets the event manager

setNestedTransactionsWithSavepoints()

public function setNestedTransactionsWithSavepoints( bool $nestedTransactionsWithSavepoints ): AdapterInterface;

Set if nested transactions should use savepoints

setup()

public static function setup( array $options ): void;

Enables/disables options in the Database component.

The flags are stored as process-global Phalcon\Support\Settings (db.escape_identifiers, db.force_casting) and therefore affect every connection in the process at once, last-writer-wins. Call this once at bootstrap; it is not per-connection configuration. Because the constructor calls setup() whenever a descriptor carries an options key, constructing one adapter with options can change the SQL another, already-configured connection generates.

sharedLock()

public function sharedLock(
    string $sqlQuery,
    string $modifier = ""
): string;

Returns a SQL modified with a shared-lock clause. The optional modifier is passed straight to the dialect (use Dialect::LOCK_NOWAIT / Dialect::LOCK_SKIP_LOCKED for PostgreSQL).

supportSequences()

public function supportSequences(): bool;

Check whether the database system requires a sequence to produce auto-numeric values

supportsDefaultValue()

public function supportsDefaultValue(): bool;

Check whether the database system support the DEFAULT keyword (SQLite does not support it)

tableExists()

public function tableExists(
    string $tableName,
    string $schemaName = null
): bool;

Generates SQL checking for the existence of a schema.table

var_dump(
    $connection->tableExists("blog", "posts")
);

tableOptions()

public function tableOptions(
    string $tableName,
    string $schemaName = null
): array;

Gets creation options from a table

print_r(
    $connection->tableOptions("robots")
);

update()

public function update(
    string $table,
    mixed $fields,
    mixed $values,
    mixed $whereCondition = null,
    mixed $dataTypes = null
): bool;

Updates data on a table using custom RBDM SQL syntax

// Updating existing robot
$success = $connection->update(
    "robots",
    ["name"],
    ["New Astro Boy"],
    "id = 101"
);

// Next SQL sentence is sent to the database system
UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101

// Updating existing robot with array condition and $dataTypes
$success = $connection->update(
    "robots",
    ["name"],
    ["New Astro Boy"],
    [
        "conditions" => "id = ?",
        "bind"       => [$some_unsafe_id],
        "bindTypes"  => [PDO::PARAM_INT], // use only if you use $dataTypes param
    ],
    [
        PDO::PARAM_STR
    ]
);

Warning! If $whereCondition is string it not escaped.

updateAsDict()

public function updateAsDict(
    string $table,
    mixed $data,
    mixed $whereCondition = null,
    mixed $dataTypes = null
): bool;

Updates data on a table using custom RBDM SQL syntax Another, more convenient syntax

// Updating existing robot
$success = $connection->updateAsDict(
    "robots",
    [
        "name" => "New Astro Boy",
    ],
    "id = 101"
);

// Next SQL sentence is sent to the database system
UPDATE `robots` SET `name` = "Astro boy" WHERE id = 101

useExplicitIdValue()

public function useExplicitIdValue(): bool;

Check whether the database system requires an explicit value for identity columns

viewExists()

public function viewExists(
    string $viewName,
    string $schemaName = null
): bool;

Generates SQL checking for the existence of a schema.view

var_dump(
    $connection->viewExists("active_users", "posts")
);

Db\Adapter\AdapterInterface

Interface Source on GitHub

Phalcon\Db\Adapter\AdapterInterface

Uses Phalcon\Contracts\Db\Adapter\Adapter

Db\Adapter\PdoFactory

Class Source on GitHub

Uses Phalcon\Factory\AbstractFactory · Phalcon\Support\Helper\Arr\Get

Method Summary

Methods

Public · 3

__construct()

public function __construct( array $services = [] );

Constructor

load()

public function load( mixed $config ): AdapterInterface;

Factory to create an instance from a Config object

newInstance()

public function newInstance(
    string $name,
    array $options = []
): AdapterInterface;

Create a new instance of the adapter

Protected · 2

getExceptionClass()

protected function getExceptionClass(): string;

getServices()

protected function getServices(): array;

Returns the available adapters

Db\Adapter\Pdo\AbstractPdo

Abstract Source on GitHub

Phalcon\Db\Adapter\Pdo is the Phalcon\Db that internally uses PDO to connect to a database

use Phalcon\Db\Adapter\Pdo\Mysql;

$config = [
    "host"     => "localhost",
    "dbname"   => "blog",
    "port"     => 3306,
    "username" => "sigma",
    "password" => "secret",
];

$connection = new Mysql($config);

Uses Phalcon\Db\Adapter\AbstractAdapter · Phalcon\Db\Column · Phalcon\Db\Exception · Phalcon\Db\Exceptions\CannotPrepareStatement · Phalcon\Db\Exceptions\InvalidBindParameter · Phalcon\Db\Exceptions\MatchedParameterNotFound · Phalcon\Db\Exceptions\NoActiveTransaction · Phalcon\Db\ResultInterface · Phalcon\Db\Result\PdoResult · Phalcon\Events\ManagerInterface · Phalcon\Support\Settings

Method Summary

public __construct( array $descriptor ) Constructor for Phalcon\Db\Adapter\Pdo public int affectedRows() Returns the number of affected rows by the latest INSERT/UPDATE/DELETE public bool begin( bool $nesting = true ) Starts a transaction in the connection public void close() Closes the active connection returning success. Phalcon automatically public bool commit( bool $nesting = true ) Commits the active transaction in the connection public void connect( array $descriptor = [] ) This method is automatically called in \Phalcon\Db\Adapter\Pdo public array convertBoundParams(string $sql,array $params = []) Converts bound parameters such as :name: or ?1 into PDO bind params ? public string escapeString( string $str ) Escapes a value to avoid SQL injections according to the active charset public bool execute(string $sqlStatement,array $bindParams = [],array $bindTypes = []) Sends SQL statements to the database server returning the success state. public \PDOStatement executePrepared(\PDOStatement $statement,array $placeholders,array $dataTypes = []) Executes a prepared statement binding. This function uses integer indexes public array getErrorInfo() Return the error info, if any public mixed getInternalHandler() Return internal PDO handler public int getTransactionLevel() Returns the current transaction nesting level public bool isUnderTransaction() Checks whether the connection is under a transaction public string|bool lastInsertId( string $name = null ) Returns the insert id for the auto_increment/serial column inserted in public \PDOStatement prepare( string $sqlStatement ) Returns a PDO prepared statement to be executed with 'executePrepared' public ResultInterface|bool query(string $sqlStatement,array $bindParams = [],array $bindTypes = []) Sends SQL statements to the database server returning the success state. public bool rollback( bool $nesting = true ) Rollbacks the active transaction in the connection protected array getDsnDefaults() Returns PDO adapter DSN defaults as a key-value map. protected void prepareRealSql(string $statement,array $parameters) Constructs the SQL statement (with parameters)

Constants

string BIND_PATTERN = "/\\?([0-9]+)|:([a-zA-Z0-9_]+):/"

Properties

protected int $affectedRows = 0 Last affected rows
protected \PDO $pdo PDO Handler

Methods

Public · 18

__construct()

public function __construct( array $descriptor );

Constructor for Phalcon\Db\Adapter\Pdo

affectedRows()

public function affectedRows(): int;

Returns the number of affected rows by the latest INSERT/UPDATE/DELETE executed in the database system

$connection->execute(
    "DELETE FROM robots"
);

echo $connection->affectedRows(), " were deleted";

begin()

public function begin( bool $nesting = true ): bool;

Starts a transaction in the connection

close()

public function close(): void;

Closes the active connection returning success. Phalcon automatically closes and destroys active connections when the request ends

commit()

public function commit( bool $nesting = true ): bool;

Commits the active transaction in the connection

connect()

public function connect( array $descriptor = [] ): void;

This method is automatically called in \Phalcon\Db\Adapter\Pdo constructor.

Call it when you need to restore a database connection.

use Phalcon\Db\Adapter\Pdo\Mysql;

// Make a connection
$connection = new Mysql(
    [
        "host"     => "localhost",
        "username" => "sigma",
        "password" => "secret",
        "dbname"   => "blog",
        "port"     => 3306,
    ]
);

// Reconnect
$connection->connect();

convertBoundParams()

public function convertBoundParams(
    string $sql,
    array $params = []
): array;

Converts bound parameters such as :name: or ?1 into PDO bind params ?

print_r(
    $connection->convertBoundParams(
        "SELECT * FROM robots WHERE name = :name:",
        [
            "Bender",
        ]
    )
);

escapeString()

public function escapeString( string $str ): string;

Escapes a value to avoid SQL injections according to the active charset in the connection

$escapedStr = $connection->escapeString("some dangerous value");

execute()

public function execute(
    string $sqlStatement,
    array $bindParams = [],
    array $bindTypes = []
): bool;

Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server does not return any rows

// Inserting data
$success = $connection->execute(
    "INSERT INTO robots VALUES (1, 'Astro Boy')"
);

$success = $connection->execute(
    "INSERT INTO robots VALUES (?, ?)",
    [
        1,
        "Astro Boy",
    ]
);

executePrepared()

public function executePrepared(
    \PDOStatement $statement,
    array $placeholders,
    array $dataTypes = []
): \PDOStatement;

Executes a prepared statement binding. This function uses integer indexes starting from zero

use Phalcon\Db\Column;

$statement = $db->prepare(
    "SELECT * FROM robots WHERE name = :name"
);

$result = $connection->executePrepared(
    $statement,
    [
        "name" => "Voltron",
    ],
    [
        "name" => Column::BIND_PARAM_STR,
    ]
);

getErrorInfo()

public function getErrorInfo(): array;

Return the error info, if any

getInternalHandler()

public function getInternalHandler(): mixed;

Return internal PDO handler

getTransactionLevel()

public function getTransactionLevel(): int;

Returns the current transaction nesting level

isUnderTransaction()

public function isUnderTransaction(): bool;

Checks whether the connection is under a transaction

$connection->begin();

// true
var_dump(
    $connection->isUnderTransaction()
);

lastInsertId()

public function lastInsertId( string $name = null ): string|bool;

Returns the insert id for the auto_increment/serial column inserted in the latest executed SQL statement

// Inserting a new robot
$success = $connection->insert(
    "robots",
    [
        "Astro Boy",
        1952,
    ],
    [
        "name",
        "year",
    ]
);

// Getting the generated id
$id = $connection->lastInsertId();

prepare()

public function prepare( string $sqlStatement ): \PDOStatement;

Returns a PDO prepared statement to be executed with 'executePrepared'

use Phalcon\Db\Column;

$statement = $db->prepare(
    "SELECT * FROM robots WHERE name = :name"
);

$result = $connection->executePrepared(
    $statement,
    [
        "name" => "Voltron",
    ],
    [
        "name" => Column::BIND_PARAM_INT,
    ]
);

query()

public function query(
    string $sqlStatement,
    array $bindParams = [],
    array $bindTypes = []
): ResultInterface|bool;

Sends SQL statements to the database server returning the success state. Use this method only when the SQL statement sent to the server is returning rows

// Querying data
$resultset = $connection->query(
    "SELECT * FROM robots WHERE type = 'mechanical'"
);

$resultset = $connection->query(
    "SELECT * FROM robots WHERE type = ?",
    [
        "mechanical",
    ]
);

rollback()

public function rollback( bool $nesting = true ): bool;

Rollbacks the active transaction in the connection

Protected · 2

getDsnDefaults()

abstract protected function getDsnDefaults(): array;

Returns PDO adapter DSN defaults as a key-value map.

prepareRealSql()

protected function prepareRealSql(
    string $statement,
    array $parameters
): void;

Constructs the SQL statement (with parameters)

@see https://stackoverflow.com/a/8403150

Db\Adapter\Pdo\Mysql

Class Source on GitHub

Specific functions for the MySQL database system

use Phalcon\Db\Adapter\Pdo\Mysql;

$config = [
    "host"     => "localhost",
    "dbname"   => "blog",
    "port"     => 3306,
    "username" => "sigma",
    "password" => "secret",
];

$connection = new Mysql($config);

Uses Phalcon\Db\Adapter\Pdo\AbstractPdo · Phalcon\Db\Column · Phalcon\Db\ColumnInterface · Phalcon\Db\Enum · Phalcon\Db\Exception · Phalcon\Db\Exceptions\MissingForeignKeyChecks · Phalcon\Db\Index · Phalcon\Db\IndexInterface · Phalcon\Db\Reference · Phalcon\Db\ReferenceInterface

Method Summary

Properties

protected string $dialectType = "mysql"
protected string $type = "mysql"

Methods

Public · 4

addForeignKey()

public function addForeignKey(
    string $tableName,
    string $schemaName,
    ReferenceInterface $reference
): bool;

Adds a foreign key to a table

describeColumns()

public function describeColumns(
    string $table,
    string $schema = null
): ColumnInterface[];

Returns an array of Phalcon\Db\Column objects describing a table

print_r(
    $connection->describeColumns("posts")
);

describeIndexes()

public function describeIndexes(
    string $table,
    string $schema = null
): IndexInterface[];

Lists table indexes

print_r(
    $connection->describeIndexes("robots_parts")
);

describeReferences()

public function describeReferences(
    string $table,
    string $schema = null
): ReferenceInterface[];

Lists table references

print_r(
    $connection->describeReferences("robots_parts")
);
Protected · 1

getDsnDefaults()

protected function getDsnDefaults(): array;

Returns PDO adapter DSN defaults as a key-value map.

Db\Adapter\Pdo\Postgresql

Class Source on GitHub

Specific functions for the PostgreSQL database system

use Phalcon\Db\Adapter\Pdo\Postgresql;

$config = [
    "host"     => "localhost",
    "dbname"   => "blog",
    "port"     => 5432,
    "username" => "postgres",
    "password" => "secret",
];

$connection = new Postgresql($config);

Uses Phalcon\Db\Adapter\Pdo\AbstractPdo · Phalcon\Db\Column · Phalcon\Db\ColumnInterface · Phalcon\Db\Enum · Phalcon\Db\Exception · Phalcon\Db\Exceptions\TableMustHaveColumn · Phalcon\Db\RawValue · Phalcon\Db\Reference · Phalcon\Db\ReferenceInterface · Throwable

Method Summary

Properties

protected string $dialectType = "postgresql"
protected string $type = "pgsql"

Methods

Public · 9

__construct()

public function __construct( array $descriptor );

Constructor for Phalcon\Db\Adapter\Pdo\Postgresql

connect()

public function connect( array $descriptor = [] ): void;

This method is automatically called in Phalcon\Db\Adapter\Pdo constructor. Call it when you need to restore a database connection.

createTable()

public function createTable(
    string $tableName,
    string $schemaName,
    array $definition
): bool;

Creates a table

describeColumns()

public function describeColumns(
    string $table,
    string $schema = null
): ColumnInterface[];

Returns an array of Phalcon\Db\Column objects describing a table

print_r(
    $connection->describeColumns("posts")
);

describeReferences()

public function describeReferences(
    string $table,
    string $schema = null
): ReferenceInterface[];

Lists table references

print_r(
    $connection->describeReferences("robots_parts")
);

getDefaultIdValue()

public function getDefaultIdValue(): RawValue;

Returns the default identity value to be inserted in an identity column

// Inserting a new robot with a valid default value for the column 'id'
$success = $connection->insert(
    "robots",
    [
        $connection->getDefaultIdValue(),
        "Astro Boy",
        1952,
    ],
    [
        "id",
        "name",
        "year",
    ]
);

modifyColumn()

public function modifyColumn(
    string $tableName,
    string $schemaName,
    ColumnInterface $column,
    ColumnInterface $currentColumn = null
): bool;

Modifies a table column based on a definition

supportSequences()

public function supportSequences(): bool;

Check whether the database system requires a sequence to produce auto-numeric values

useExplicitIdValue()

public function useExplicitIdValue(): bool;

Check whether the database system requires an explicit value for identity columns

Protected · 1

getDsnDefaults()

protected function getDsnDefaults(): array;

Returns PDO adapter DSN defaults as a key-value map.

Db\Adapter\Pdo\Sqlite

Class Source on GitHub

Specific functions for the SQLite database system

use Phalcon\Db\Adapter\Pdo\Sqlite;

$connection = new Sqlite(
    [
        "dbname" => "/tmp/test.sqlite",
    ]
);

Uses Phalcon\Db\Adapter\Pdo\AbstractPdo · Phalcon\Db\Column · Phalcon\Db\ColumnInterface · Phalcon\Db\Enum · Phalcon\Db\Exception · Phalcon\Db\Exceptions\MissingSqliteDatabase · Phalcon\Db\Index · Phalcon\Db\IndexInterface · Phalcon\Db\RawValue · Phalcon\Db\Reference · Phalcon\Db\ReferenceInterface

Method Summary

Properties

protected string $dialectType = "sqlite"
protected string $type = "sqlite"

Methods

Public · 8

__construct()

public function __construct( array $descriptor );

Constructor for Phalcon\Db\Adapter\Pdo\Sqlite

connect()

public function connect( array $descriptor = [] ): void;

This method is automatically called in Phalcon\Db\Adapter\Pdo constructor. Call it when you need to restore a database connection.

describeColumns()

public function describeColumns(
    string $table,
    string $schema = null
): ColumnInterface[];

Returns an array of Phalcon\Db\Column objects describing a table

print_r(
    $connection->describeColumns("posts")
);

describeIndexes()

public function describeIndexes(
    string $table,
    string $schema = null
): IndexInterface[];

Lists table indexes

print_r(
    $connection->describeIndexes("robots_parts")
);

describeReferences()

public function describeReferences(
    string $table,
    string $schema = null
): ReferenceInterface[];

Lists table references

getDefaultValue()

public function getDefaultValue(): RawValue;

Returns the default value to make the RBDM use the default value declared in the table definition

// Inserting a new robot with a valid default value for the column 'year'
$success = $connection->insert(
    "robots",
    [
        "Astro Boy",
        $connection->getDefaultValue(),
    ],
    [
        "name",
        "year",
    ]
);

supportsDefaultValue()

public function supportsDefaultValue(): bool;

SQLite does not support the DEFAULT keyword

useExplicitIdValue()

public function useExplicitIdValue(): bool;

Check whether the database system requires an explicit value for identity columns

Protected · 1

getDsnDefaults()

protected function getDsnDefaults(): array;

Returns PDO adapter DSN defaults as a key-value map.

Db\Check

Class Source on GitHub

Allows to define CHECK constraints on tables. CHECK constraints enforce a boolean SQL predicate on each row of the table; rows that fail the predicate are rejected at INSERT/UPDATE time.

use Phalcon\Db\Check;

$positivePrice = new Check(
    "chk_price_positive",
    [
        "expression" => "price > 0",
    ]
);

// Used inside a createTable() definition
$connection->createTable(
    "products",
    null,
    [
        "columns" => [ ... ],
        "checks"  => [$positivePrice],
    ]
);

// Or added to an existing table (MySQL 8.0.16+ and PostgreSQL).
// SQLite cannot add CHECK constraints to existing tables.
$connection->addCheck("products", null, $positivePrice);

Uses Phalcon\Db\Exceptions\CheckExpressionRequired · Phalcon\Db\Exceptions\InvalidCheckExpression

Method Summary

Properties

protected string $expression The boolean SQL predicate this constraint enforces.
protected string $name The CHECK constraint name. An empty string indicates an unnamed constraint - the dialect will emit the clause without a CONSTRAINT prefix in that case.

Methods

Public · 3

__construct()

public function __construct(
    string $name,
    array $definition
);

Phalcon\Db\Check constructor

getExpression()

public function getExpression(): string;

Returns the CHECK expression

getName()

public function getName(): string;

Returns the constraint name (may be an empty string for unnamed)

Db\CheckInterface

Interface Source on GitHub

Phalcon\Db\CheckInterface

Uses Phalcon\Contracts\Db\Check

Db\Column

Class Source on GitHub

Allows to define columns to be used on create or alter table operations

use Phalcon\Db\Column as Column;

// Column definition
$column = new Column(
    "id",
    [
        "type"          => Column::TYPE_INTEGER,
        "size"          => 10,
        "unsigned"      => true,
        "notNull"       => true,
        "autoIncrement" => true,
        "first"         => true,
        "comment"       => "",
    ]
);

// Add column to existing table
$connection->addColumn("robots", null, $column);

Uses Phalcon\Db\Exceptions\ColumnTypeRejectsAutoIncrement · Phalcon\Db\Exceptions\ColumnTypeRejectsScale · Phalcon\Db\Exceptions\ColumnTypeRequired · Phalcon\Db\Exceptions\GeneratedAutoIncrementConflict · Phalcon\Db\Exceptions\GeneratedDefaultConflict · Phalcon\Db\Exceptions\InvalidGenerationExpression

Method Summary

Constants

int BIND_PARAM_BLOB = 3 Bind Type Blob
int BIND_PARAM_BOOL = 5 Bind Type Bool
int BIND_PARAM_DECIMAL = 32 Bind Type Decimal
int BIND_PARAM_INT = 1 Bind Type Integer
int BIND_PARAM_NULL = 0 Bind Type Null
int BIND_PARAM_STR = 2 Bind Type String
int BIND_SKIP = 1024 Skip binding by type
int TYPE_BIGINTEGER = 14 Big integer abstract data type
int TYPE_BINARY = 27 Binary abstract data type
int TYPE_BIT = 19 Bit abstract data type
int TYPE_BLOB = 11 Blob abstract data type
int TYPE_BOOLEAN = 8 Bool abstract data type
int TYPE_BYTEA = 30 PostgreSQL BYTEA binary type
int TYPE_CHAR = 5 Char abstract data type
int TYPE_CIDR = 32 PostgreSQL CIDR network-address type
int TYPE_DATE = 1 Date abstract data type
int TYPE_DATERANGE = 39 PostgreSQL DATERANGE range-of-date type
int TYPE_DATETIME = 4 Datetime abstract data type
int TYPE_DECIMAL = 3 Decimal abstract data type
int TYPE_DOUBLE = 9 Double abstract data type
int TYPE_ENUM = 18 Enum abstract data type
int TYPE_FLOAT = 7 Float abstract data type
int TYPE_GEOMETRY = 40 Spatial GEOMETRY base type (MySQL 5.7+; PostgreSQL + PostGIS)
int TYPE_GEOMETRYCOLLECTION = 47 Spatial GEOMETRYCOLLECTION type (MySQL; PostgreSQL + PostGIS)
int TYPE_INET = 31 PostgreSQL INET IPv4/IPv6 address type
int TYPE_INT4RANGE = 34 PostgreSQL INT4RANGE range-of-integer type
int TYPE_INT8RANGE = 35 PostgreSQL INT8RANGE range-of-bigint type
int TYPE_INTEGER = 0 Int abstract data type
int TYPE_JSON = 15 Json abstract data type
int TYPE_JSONB = 16 Jsonb abstract data type
int TYPE_LINESTRING = 42 Spatial LINESTRING type (MySQL; PostgreSQL + PostGIS)
int TYPE_LONGBLOB = 13 Longblob abstract data type
int TYPE_LONGTEXT = 24 Longtext abstract data type
int TYPE_MACADDR = 33 PostgreSQL MACADDR MAC-address type
int TYPE_MEDIUMBLOB = 12 Mediumblob abstract data type
int TYPE_MEDIUMINTEGER = 21 Mediumintegerr abstract data type
int TYPE_MEDIUMTEXT = 23 Mediumtext abstract data type
int TYPE_MULTILINESTRING = 45 Spatial MULTILINESTRING type (MySQL; PostgreSQL + PostGIS)
int TYPE_MULTIPOINT = 44 Spatial MULTIPOINT type (MySQL; PostgreSQL + PostGIS)
int TYPE_MULTIPOLYGON = 46 Spatial MULTIPOLYGON type (MySQL; PostgreSQL + PostGIS)
int TYPE_NUMRANGE = 36 PostgreSQL NUMRANGE range-of-numeric type
int TYPE_POINT = 41 Spatial POINT type (MySQL; PostgreSQL + PostGIS)
int TYPE_POLYGON = 43 Spatial POLYGON type (MySQL; PostgreSQL + PostGIS)
int TYPE_SMALLINTEGER = 22 Smallint abstract data type
int TYPE_TEXT = 6 Text abstract data type
int TYPE_TIME = 20 Time abstract data type
int TYPE_TIMESTAMP = 17 Timestamp abstract data type
int TYPE_TINYBLOB = 10 Tinyblob abstract data type
int TYPE_TINYINTEGER = 26 Tinyint abstract data type
int TYPE_TINYTEXT = 25 Tinytext abstract data type
int TYPE_TSRANGE = 37 PostgreSQL TSRANGE range-of-timestamp (without time zone) type
int TYPE_TSTZRANGE = 38 PostgreSQL TSTZRANGE range-of-timestamp (with time zone) type
int TYPE_UUID = 29 UUID abstract data type
int TYPE_VARBINARY = 28 Varbinary abstract data type
int TYPE_VARCHAR = 2 Varchar abstract data type

Properties

protected string|null $after = null Column Position
protected bool $autoIncrement = false Column is autoIncrement?
protected int $bindType = 2 Bind Type
protected string|null $comment = null Column's comment
protected mixed|null $defaultValue = null Default column value
protected bool $first = false Position is first
protected string|null $generated = null Generation expression for GENERATED ALWAYS AS (...). Null when the column is not a generated/computed column.
protected bool $generationStored = false Whether a generated column is STORED (true) or VIRTUAL (false). Ignored when the column is not generated. PostgreSQL only supports STORED and emits it regardless of this flag.
protected bool $invisible = false Whether the column is INVISIBLE (MySQL 8.0.23+). Invisible columns are excluded from SELECT * expansion but can still be referenced explicitly.
protected bool $isArray = false Whether the column is an array of its base type. Recognized by the PostgreSQL dialect (e.g. INTEGER[], TEXT[]). MySQL and SQLite ignore the flag.
protected bool $isNumeric = false The column have some numeric type?
protected string $name Column's name
protected bool $notNull = true Column not nullable? Default SQL definition is NOT NULL.
protected bool $primary = false Column is part of the primary key?
protected int $scale = 0 Integer column number scale
protected int|string $size = 0 Integer column size
protected int $type Column data type
protected int $typeReference = -1 Column data type reference
protected array|string $typeValues = [] Column data type values
protected bool $unsigned = false Integer column unsigned?

Methods

Public · 23

__construct()

public function __construct(
    string $name,
    array $definition
);

Phalcon\Db\Column constructor

getAfterPosition()

public function getAfterPosition(): string|null;

Check whether field absolute to position in table

getBindType()

public function getBindType(): int;

Returns the type of bind handling

getComment()

public function getComment(): string|null;

Column's comment

getDefault()

public function getDefault(): mixed;

Default column value

getGenerationExpression()

public function getGenerationExpression(): string|null;

Returns the generation expression for a generated/computed column. Returns null when the column is not generated.

getName()

public function getName(): string;

Column's name

getScale()

public function getScale(): int;

Integer column number scale

getSize()

public function getSize(): int|string;

Integer column size

getType()

public function getType(): int|string;

Column data type

getTypeReference()

public function getTypeReference(): int;

Column data type reference

getTypeValues()

public function getTypeValues(): array|string;

Column data type values

hasDefault()

public function hasDefault(): bool;

Check whether column has default value

isArray()

public function isArray(): bool;

Whether the column is an array of its base type. Recognized by the PostgreSQL dialect (e.g. INTEGER[], TEXT[]); MySQL and SQLite ignore the flag.

isAutoIncrement()

public function isAutoIncrement(): bool;

Auto-Increment

isFirst()

public function isFirst(): bool;

Check whether column have first position in table

isGenerated()

public function isGenerated(): bool;

Whether the column is a generated/computed column.

isGenerationStored()

public function isGenerationStored(): bool;

Whether a generated column is STORED. false means VIRTUAL. Always meaningful only when isGenerated() is true.

isInvisible()

public function isInvisible(): bool;

Whether the column is declared INVISIBLE (MySQL 8.0.23+). Invisible columns are excluded from SELECT * expansion but can still be referenced explicitly. PostgreSQL and SQLite have no equivalent and dialects targeting them ignore the flag.

isNotNull()

public function isNotNull(): bool;

Not null

isNumeric()

public function isNumeric(): bool;

Check whether column have an numeric type

isPrimary()

public function isPrimary(): bool;

Column is part of the primary key?

isUnsigned()

public function isUnsigned(): bool;

Returns true if number column is unsigned

Db\ColumnInterface

Interface Source on GitHub

Phalcon\Db\ColumnInterface

Uses Phalcon\Contracts\Db\Column

Db\Dialect

Abstract Source on GitHub

This is the base class to each database dialect. This implements common methods to transform intermediate code into its RDBMS related syntax

Uses Phalcon\Db\Exceptions\ConflictTargetColumnRequired · Phalcon\Db\Exceptions\ConflictUpdateColumnRequired · Phalcon\Db\Exceptions\InvalidGroupByExpression · Phalcon\Db\Exceptions\InvalidListExpression · Phalcon\Db\Exceptions\InvalidOrderByExpression · Phalcon\Db\Exceptions\InvalidSqlExpression · Phalcon\Db\Exceptions\InvalidSqlExpressionType · Phalcon\Db\Exceptions\InvalidUnaryExpression · Phalcon\Db\Exceptions\MaterializedViewsNotSupported · Phalcon\Db\Exceptions\MissingDefinitionKey · Phalcon\Db\Exceptions\ReturningNotSupported · Phalcon\Db\Exceptions\UnsupportedOperator · Phalcon\Support\Settings

Method Summary

public string createMaterializedView(string $viewName,array $definition,string $schemaName = null) Generates SQL to create a materialized view. Supported by PostgreSQL public string createSavepoint( string $name ) Generate SQL to create a new savepoint public string dropMaterializedView(string $viewName,string $schemaName = null,bool $ifExists = true) Generates SQL to drop a materialized view. Supported by PostgreSQL. public string escape(string $str,string $escapeChar = null) Escape identifiers public string escapeSchema(string $str,string $escapeChar = null) Escape Schema public string forUpdate(string $sqlQuery,string $modifier = "") Returns a SQL modified with a FOR UPDATE clause. The optional modifier public string getColumnList(array $columnList,string $escapeChar = null,array $bindCounts = []) Gets a list of columns with escaped identifiers public array getCustomFunctions() Returns registered functions public string getSqlColumn(mixed $column,string $escapeChar = null,array $bindCounts = []) Resolve Column expressions public string getSqlExpression(array $expression,string $escapeChar = null,array $bindCounts = []) Transforms an intermediate representation for an expression into a database system valid expression public string getSqlTable(mixed $table,string $escapeChar = null) Transform an intermediate representation of a schema/table into a public string limit(string $sqlQuery,mixed $number) Generates the SQL for LIMIT clause public string onConflictUpdate(string $sqlQuery,array $conflictColumns,array $updateColumns) Appends an ON CONFLICT (col, ...) DO UPDATE SET col = excluded.col public string refreshMaterializedView(string $viewName,string $schemaName = null,bool $concurrent = false) Generates SQL to refresh a materialized view. Supported by public static registerCustomFunction(string $name,callable $customFunction) Registers custom SQL functions public string releaseSavepoint( string $name ) Generate SQL to release a savepoint public string returning(string $sqlQuery,array $columns) Returns a SQL statement extended with a RETURNING clause so the public string rollbackSavepoint( string $name ) Generate SQL to rollback a savepoint public string select( array $definition ) Builds a SELECT statement public bool supportsAlterTable() Checks whether the platform supports the full ALTER TABLE matrix: public bool supportsMaterializedViews() Checks whether the platform supports materialized views. Only PostgreSQL public bool supportsOnConflictUpdate() Checks whether the platform supports the ON CONFLICT (...) DO UPDATE public bool supportsReleaseSavepoints() Checks whether the platform supports releasing savepoints. public bool supportsReturning() Checks whether the platform supports the RETURNING clause. MySQL public bool supportsSavepoints() Checks whether the platform supports savepoints protected string checkColumnType( ColumnInterface $column ) Checks the column type and if not string it returns the type reference protected string checkColumnTypeSql( ColumnInterface $column ) Checks the column type and returns the updated SQL statement protected string getCheckClause(CheckInterface $check,string $escapeChar = "`") Builds a CHECK constraint clause from a CheckInterface, using the protected string getColumnSize( ColumnInterface $column ) Returns the size of the column enclosed in parentheses protected string getColumnSizeAndScale( ColumnInterface $column ) Returns the column size and scale enclosed in parentheses protected string getGeneratedClause(ColumnInterface $column,bool $forceStored = false) Builds the GENERATED ALWAYS AS (<expr>) VIRTUAL|STORED clause for a protected string getIndexColumnList(IndexInterface $index,bool $wrapExpressions = true) Builds the per-index parenthesized column list, honoring per-column protected string getSqlExpressionAll(array $expression,string $escapeChar = null) Resolve * protected string getSqlExpressionBinaryOperations(array $expression,string $escapeChar = null,array $bindCounts = []) Resolve binary operations expressions protected string getSqlExpressionCase(array $expression,string $escapeChar = null,array $bindCounts = []) Resolve CASE expressions protected string getSqlExpressionCastValue(array $expression,string $escapeChar = null,array $bindCounts = []) Resolve CAST of values protected string getSqlExpressionConvertValue(array $expression,string $escapeChar = null,array $bindCounts = []) Resolve CONVERT of values encodings protected string getSqlExpressionFrom(mixed $expression,string $escapeChar = null) Resolve a FROM clause protected string getSqlExpressionFunctionCall(array $expression,string $escapeChar = null,array $bindCounts = []) Resolve function calls protected string getSqlExpressionGroupBy(mixed $expression,string $escapeChar = null,array $bindCounts = []) Resolve a GROUP BY clause protected string getSqlExpressionHaving(array $expression,string $escapeChar = null,array $bindCounts = []) Resolve a HAVING clause protected string getSqlExpressionJoins(mixed $expression,string $escapeChar = null,array $bindCounts = []) Resolve a JOINs clause protected string getSqlExpressionLimit(mixed $expression,string $escapeChar = null,array $bindCounts = []) Resolve a LIMIT clause protected string getSqlExpressionList(array $expression,string $escapeChar = null,array $bindCounts = []) Resolve Lists protected string getSqlExpressionObject(array $expression,string $escapeChar = null,array $bindCounts = []) Resolve object expressions protected string getSqlExpressionOrderBy(mixed $expression,string $escapeChar = null,array $bindCounts = []) Resolve an ORDER BY clause protected string getSqlExpressionQualified(array $expression,string $escapeChar = null) Resolve qualified expressions protected string getSqlExpressionScalar(array $expression,string $escapeChar = null,array $bindCounts = []) Resolve Column expressions protected string getSqlExpressionUnaryOperations(array $expression,string $escapeChar = null,array $bindCounts = []) Resolve unary operations expressions protected string getSqlExpressionWhere(mixed $expression,string $escapeChar = null,array $bindCounts = []) Resolve a WHERE clause protected string prepareColumnAlias(string $qualified,string $alias = null,string $escapeChar = null) Prepares column for this RDBMS protected string prepareQualified(string $column,string $domain = null,string $escapeChar = null) Prepares qualified for this RDBMS protected string prepareTable(string $table,string $schema = null,string $alias = null,string $escapeChar = null) Prepares table for this RDBMS

Properties

protected array $customFunctions = []
protected string $escapeChar
protected array $guardedOperators = [...] Dialect-specific operators that a concrete dialect must opt into via supportedOperators; using one elsewhere throws.
protected array $supportedOperators = [] Subset of guardedOperators that this dialect emits. Overridden per dialect.

Methods

Public · 25

createMaterializedView()

public function createMaterializedView(
    string $viewName,
    array $definition,
    string $schemaName = null
): string;

Generates SQL to create a materialized view. Supported by PostgreSQL (CREATE MATERIALIZED VIEW name AS <sql>). Other dialects inherit this throw - MySQL and SQLite have no materialized-view concept.

createSavepoint()

public function createSavepoint( string $name ): string;

Generate SQL to create a new savepoint

dropMaterializedView()

public function dropMaterializedView(
    string $viewName,
    string $schemaName = null,
    bool $ifExists = true
): string;

Generates SQL to drop a materialized view. Supported by PostgreSQL.

escape()

final public function escape(
    string $str,
    string $escapeChar = null
): string;

Escape identifiers

escapeSchema()

final public function escapeSchema(
    string $str,
    string $escapeChar = null
): string;

Escape Schema

forUpdate()

public function forUpdate(
    string $sqlQuery,
    string $modifier = ""
): string;

Returns a SQL modified with a FOR UPDATE clause. The optional modifier appends a row-lock disposition keyword.

$sql = $dialect->forUpdate("SELECT * FROM robots");
echo $sql; // SELECT * FROM robots FOR UPDATE

$sql = $dialect->forUpdate(
    "SELECT * FROM robots",
    Dialect::LOCK_NOWAIT
);
echo $sql; // SELECT * FROM robots FOR UPDATE NOWAIT

$sql = $dialect->forUpdate(
    "SELECT * FROM robots",
    Dialect::LOCK_SKIP_LOCKED
);
echo $sql; // SELECT * FROM robots FOR UPDATE SKIP LOCKED

getColumnList()

final public function getColumnList(
    array $columnList,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Gets a list of columns with escaped identifiers

echo $dialect->getColumnList(
    [
        "column1",
        "column",
    ]
);

getCustomFunctions()

public function getCustomFunctions(): array;

Returns registered functions

getSqlColumn()

final public function getSqlColumn(
    mixed $column,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve Column expressions

getSqlExpression()

public function getSqlExpression(
    array $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Transforms an intermediate representation for an expression into a database system valid expression

getSqlTable()

final public function getSqlTable(
    mixed $table,
    string $escapeChar = null
): string;

Transform an intermediate representation of a schema/table into a database system valid expression

limit()

public function limit(
    string $sqlQuery,
    mixed $number
): string;

Generates the SQL for LIMIT clause

// SELECT * FROM robots LIMIT 10
echo $dialect->limit(
    "SELECT * FROM robots",
    10
);

// SELECT * FROM robots LIMIT 10 OFFSET 50
echo $dialect->limit(
    "SELECT * FROM robots",
    [10, 50]
);

onConflictUpdate()

public function onConflictUpdate(
    string $sqlQuery,
    array $conflictColumns,
    array $updateColumns
): string;

Appends an ON CONFLICT (col, ...) DO UPDATE SET col = excluded.col upsert clause to the supplied INSERT statement. The syntax is the SQL standard form recognized by PostgreSQL (9.5+) and SQLite (3.24+). MySQL overrides this method to throw because its ON DUPLICATE KEY UPDATE has a different shape (deferred to parser item #23).

refreshMaterializedView()

public function refreshMaterializedView(
    string $viewName,
    string $schemaName = null,
    bool $concurrent = false
): string;

Generates SQL to refresh a materialized view. Supported by PostgreSQL. Pass concurrent = true for REFRESH MATERIALIZED VIEW CONCURRENTLY ..., which avoids blocking concurrent SELECTs (requires the view to have a unique index).

registerCustomFunction()

public function registerCustomFunction(
    string $name,
    callable $customFunction
): static;

Registers custom SQL functions

releaseSavepoint()

public function releaseSavepoint( string $name ): string;

Generate SQL to release a savepoint

returning()

public function returning(
    string $sqlQuery,
    array $columns
): string;

Returns a SQL statement extended with a RETURNING clause so the INSERT/UPDATE/DELETE returns rows. Supported by PostgreSQL and SQLite 3.35+. Pass ["*"] for RETURNING *, or a list of column names. The base implementation throws - MySQL inherits it because MySQL has no RETURNING construct.

rollbackSavepoint()

public function rollbackSavepoint( string $name ): string;

Generate SQL to rollback a savepoint

select()

public function select( array $definition ): string;

Builds a SELECT statement

supportsAlterTable()

public function supportsAlterTable(): bool;

Checks whether the platform supports the full ALTER TABLE matrix: modifying existing columns and adding or dropping foreign keys, primary keys, and check constraints. SQLite returns false - those operations throw a dedicated Sqlite*NotSupported exception there (basic ADD COLUMN remains available).

supportsMaterializedViews()

public function supportsMaterializedViews(): bool;

Checks whether the platform supports materialized views. Only PostgreSQL returns true; createMaterializedView() throws on the other dialects.

supportsOnConflictUpdate()

public function supportsOnConflictUpdate(): bool;

Checks whether the platform supports the ON CONFLICT (...) DO UPDATE upsert clause. MySQL returns false; onConflictUpdate() throws there.

supportsReleaseSavepoints()

public function supportsReleaseSavepoints(): bool;

Checks whether the platform supports releasing savepoints.

supportsReturning()

public function supportsReturning(): bool;

Checks whether the platform supports the RETURNING clause. MySQL returns false; returning() throws there.

supportsSavepoints()

public function supportsSavepoints(): bool;

Checks whether the platform supports savepoints

Protected · 28

checkColumnType()

protected function checkColumnType( ColumnInterface $column ): string;

Checks the column type and if not string it returns the type reference

checkColumnTypeSql()

protected function checkColumnTypeSql( ColumnInterface $column ): string;

Checks the column type and returns the updated SQL statement

getCheckClause()

protected function getCheckClause(
    CheckInterface $check,
    string $escapeChar = "`"
): string;

Builds a CHECK constraint clause from a CheckInterface, using the provided escape character for the constraint name (so each dialect gets its native quoting). Returns the clause body - the dialect's createTable() / addCheck() is expected to prefix ADD or place the result on its own line as appropriate.

getColumnSize()

protected function getColumnSize( ColumnInterface $column ): string;

Returns the size of the column enclosed in parentheses

getColumnSizeAndScale()

protected function getColumnSizeAndScale( ColumnInterface $column ): string;

Returns the column size and scale enclosed in parentheses

getGeneratedClause()

protected function getGeneratedClause(
    ColumnInterface $column,
    bool $forceStored = false
): string;

Builds the GENERATED ALWAYS AS (<expr>) VIRTUAL|STORED clause for a generated/computed column. Returns an empty string when the column is not generated. When forceStored is true the clause is always emitted as STORED regardless of the column's isGenerationStored() flag - PostgreSQL uses this since it only supports stored generated columns.

getIndexColumnList()

protected function getIndexColumnList(
    IndexInterface $index,
    bool $wrapExpressions = true
): string;

Builds the per-index parenthesized column list, honoring per-column sort directions when the index declares any. Returns the bare comma-separated getColumnList() output when no directions are set, preserving the legacy rendering exactly. When directions are set, each column is followed by ASC or DESC; trailing positions absent from the directions array default to ASC.

getSqlExpressionAll()

final protected function getSqlExpressionAll(
    array $expression,
    string $escapeChar = null
): string;

Resolve *

getSqlExpressionBinaryOperations()

final protected function getSqlExpressionBinaryOperations(
    array $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve binary operations expressions

getSqlExpressionCase()

final protected function getSqlExpressionCase(
    array $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve CASE expressions

getSqlExpressionCastValue()

final protected function getSqlExpressionCastValue(
    array $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve CAST of values

getSqlExpressionConvertValue()

final protected function getSqlExpressionConvertValue(
    array $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve CONVERT of values encodings

getSqlExpressionFrom()

final protected function getSqlExpressionFrom(
    mixed $expression,
    string $escapeChar = null
): string;

Resolve a FROM clause

getSqlExpressionFunctionCall()

final protected function getSqlExpressionFunctionCall(
    array $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve function calls

getSqlExpressionGroupBy()

final protected function getSqlExpressionGroupBy(
    mixed $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve a GROUP BY clause

getSqlExpressionHaving()

final protected function getSqlExpressionHaving(
    array $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve a HAVING clause

getSqlExpressionJoins()

final protected function getSqlExpressionJoins(
    mixed $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve a JOINs clause

getSqlExpressionLimit()

final protected function getSqlExpressionLimit(
    mixed $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve a LIMIT clause

getSqlExpressionList()

final protected function getSqlExpressionList(
    array $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve Lists

getSqlExpressionObject()

final protected function getSqlExpressionObject(
    array $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve object expressions

getSqlExpressionOrderBy()

final protected function getSqlExpressionOrderBy(
    mixed $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve an ORDER BY clause

getSqlExpressionQualified()

final protected function getSqlExpressionQualified(
    array $expression,
    string $escapeChar = null
): string;

Resolve qualified expressions

getSqlExpressionScalar()

final protected function getSqlExpressionScalar(
    array $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve Column expressions

getSqlExpressionUnaryOperations()

final protected function getSqlExpressionUnaryOperations(
    array $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve unary operations expressions

getSqlExpressionWhere()

final protected function getSqlExpressionWhere(
    mixed $expression,
    string $escapeChar = null,
    array $bindCounts = []
): string;

Resolve a WHERE clause

prepareColumnAlias()

protected function prepareColumnAlias(
    string $qualified,
    string $alias = null,
    string $escapeChar = null
): string;

Prepares column for this RDBMS

prepareQualified()

protected function prepareQualified(
    string $column,
    string $domain = null,
    string $escapeChar = null
): string;

Prepares qualified for this RDBMS

prepareTable()

protected function prepareTable(
    string $table,
    string $schema = null,
    string $alias = null,
    string $escapeChar = null
): string;

Prepares table for this RDBMS

Db\DialectInterface

Interface Source on GitHub

Phalcon\Db\DialectInterface

Uses Phalcon\Contracts\Db\Dialect

Db\Dialect\Mysql

Class Source on GitHub

Generates database specific SQL for the MySQL RDBMS

Uses Phalcon\Db\CheckInterface · Phalcon\Db\Column · Phalcon\Db\ColumnInterface · Phalcon\Db\Dialect · Phalcon\Db\DialectInterface · Phalcon\Db\Exception · Phalcon\Db\Exceptions\MissingDefinitionKey · Phalcon\Db\Exceptions\MysqlOnConflictNotSupported · Phalcon\Db\Exceptions\UnrecognizedDataType · Phalcon\Db\IndexInterface · Phalcon\Db\RawValue · Phalcon\Db\ReferenceInterface

Method Summary

public string addCheck(string $tableName,string $schemaName,CheckInterface $check) Generates SQL to add a CHECK constraint to an existing table. public string addColumn(string $tableName,string $schemaName,ColumnInterface $column) Generates SQL to add a column to a table public string addForeignKey(string $tableName,string $schemaName,ReferenceInterface $reference) Generates SQL to add an index to a table public string addIndex(string $tableName,string $schemaName,IndexInterface $index) Generates SQL to add an index to a table public string addPrimaryKey(string $tableName,string $schemaName,IndexInterface $index) Generates SQL to add the primary key to a table public string createTable(string $tableName,string $schemaName,array $definition) Generates SQL to create a table public string createView(string $viewName,array $definition,string $schemaName = null) Generates SQL to create a view public string describeColumns(string $table,string $schema = null) Generates SQL describing a table public string describeIndexes(string $table,string $schema = null) Generates SQL to query indexes on a table public string describeReferences(string $table,string $schema = null) Generates SQL to query foreign keys on a table public string dropCheck(string $tableName,string $schemaName,string $checkName) Generates SQL to delete a CHECK constraint from a table public string dropColumn(string $tableName,string $schemaName,string $columnName) Generates SQL to delete a column from a table public string dropForeignKey(string $tableName,string $schemaName,string $referenceName) Generates SQL to delete a foreign key from a table public string dropIndex(string $tableName,string $schemaName,string $indexName) Generates SQL to delete an index from a table public string dropPrimaryKey(string $tableName,string $schemaName) Generates SQL to delete primary key from a table public string dropTable(string $tableName,string $schemaName = null,bool $ifExists = true) Generates SQL to drop a table public string dropView(string $viewName,string $schemaName = null,bool $ifExists = true) Generates SQL to drop a view public string getColumnDefinition( ColumnInterface $column ) Gets the column name in MySQL public string getForeignKeyChecks() Generates SQL to check DB parameter FOREIGN_KEY_CHECKS. public string listTables( string $schemaName = null ) List all tables in database public string listViews( string $schemaName = null ) Generates the SQL to list all views of a schema or user public string modifyColumn(string $tableName,string $schemaName,ColumnInterface $column,ColumnInterface $currentColumn = null) Generates SQL to modify a column in a table public string onConflictUpdate(string $sqlQuery,array $conflictColumns,array $updateColumns) MySQL does not support the SQL-standard ON CONFLICT DO UPDATE public string sharedLock(string $sqlQuery,string $modifier = "") Returns a SQL modified with a LOCK IN SHARE MODE clause. The modifier public bool supportsOnConflictUpdate() MySQL does not support the SQL-standard ON CONFLICT (...) DO UPDATE public string tableExists(string $tableName,string $schemaName = null) Generates SQL checking for the existence of a schema.table public string tableOptions(string $table,string $schema = null) Generates the SQL to describe the table creation options public string truncateTable(string $tableName,string $schemaName) Generates SQL to truncate a table public string viewExists(string $viewName,string $schemaName = null) Generates SQL checking for the existence of a schema.view protected string getTableOptions( array $definition ) Generates SQL to add the table creation options

Properties

protected string $escapeChar = "`"
protected array $supportedOperators = [...]

Methods

Public · 29

addCheck()

public function addCheck(
    string $tableName,
    string $schemaName,
    CheckInterface $check
): string;

Generates SQL to add a CHECK constraint to an existing table. Enforced by MySQL 8.0.16+.

addColumn()

public function addColumn(
    string $tableName,
    string $schemaName,
    ColumnInterface $column
): string;

Generates SQL to add a column to a table

addForeignKey()

public function addForeignKey(
    string $tableName,
    string $schemaName,
    ReferenceInterface $reference
): string;

Generates SQL to add an index to a table

addIndex()

public function addIndex(
    string $tableName,
    string $schemaName,
    IndexInterface $index
): string;

Generates SQL to add an index to a table

addPrimaryKey()

public function addPrimaryKey(
    string $tableName,
    string $schemaName,
    IndexInterface $index
): string;

Generates SQL to add the primary key to a table

createTable()

public function createTable(
    string $tableName,
    string $schemaName,
    array $definition
): string;

Generates SQL to create a table

createView()

public function createView(
    string $viewName,
    array $definition,
    string $schemaName = null
): string;

Generates SQL to create a view

describeColumns()

public function describeColumns(
    string $table,
    string $schema = null
): string;

Generates SQL describing a table

print_r(
    $dialect->describeColumns("posts")
);

describeIndexes()

public function describeIndexes(
    string $table,
    string $schema = null
): string;

Generates SQL to query indexes on a table

describeReferences()

public function describeReferences(
    string $table,
    string $schema = null
): string;

Generates SQL to query foreign keys on a table

dropCheck()

public function dropCheck(
    string $tableName,
    string $schemaName,
    string $checkName
): string;

Generates SQL to delete a CHECK constraint from a table

dropColumn()

public function dropColumn(
    string $tableName,
    string $schemaName,
    string $columnName
): string;

Generates SQL to delete a column from a table

dropForeignKey()

public function dropForeignKey(
    string $tableName,
    string $schemaName,
    string $referenceName
): string;

Generates SQL to delete a foreign key from a table

dropIndex()

public function dropIndex(
    string $tableName,
    string $schemaName,
    string $indexName
): string;

Generates SQL to delete an index from a table

dropPrimaryKey()

public function dropPrimaryKey(
    string $tableName,
    string $schemaName
): string;

Generates SQL to delete primary key from a table

dropTable()

public function dropTable(
    string $tableName,
    string $schemaName = null,
    bool $ifExists = true
): string;

Generates SQL to drop a table

dropView()

public function dropView(
    string $viewName,
    string $schemaName = null,
    bool $ifExists = true
): string;

Generates SQL to drop a view

getColumnDefinition()

public function getColumnDefinition( ColumnInterface $column ): string;

Gets the column name in MySQL

getForeignKeyChecks()

public function getForeignKeyChecks(): string;

Generates SQL to check DB parameter FOREIGN_KEY_CHECKS.

listTables()

public function listTables( string $schemaName = null ): string;

List all tables in database

print_r(
    $dialect->listTables("blog")
);

listViews()

public function listViews( string $schemaName = null ): string;

Generates the SQL to list all views of a schema or user

modifyColumn()

public function modifyColumn(
    string $tableName,
    string $schemaName,
    ColumnInterface $column,
    ColumnInterface $currentColumn = null
): string;

Generates SQL to modify a column in a table

onConflictUpdate()

public function onConflictUpdate(
    string $sqlQuery,
    array $conflictColumns,
    array $updateColumns
): string;

MySQL does not support the SQL-standard ON CONFLICT DO UPDATE upsert syntax - it has its own INSERT ... ON DUPLICATE KEY UPDATE which requires PHQL grammar work (deferred). The base helper is overridden here to throw, preventing accidental emission of invalid SQL on MySQL connections.

sharedLock()

public function sharedLock(
    string $sqlQuery,
    string $modifier = ""
): string;

Returns a SQL modified with a LOCK IN SHARE MODE clause. The modifier argument is accepted for signature parity with the contract but is silently ignored on MySQL - its legacy LOCK IN SHARE MODE syntax has no NOWAIT / SKIP LOCKED variant. Callers needing those modifiers should target PostgreSQL or stay on forUpdate().

$sql = $dialect->sharedLock("SELECT * FROM robots");

echo $sql; // SELECT * FROM robots LOCK IN SHARE MODE

supportsOnConflictUpdate()

public function supportsOnConflictUpdate(): bool;

MySQL does not support the SQL-standard ON CONFLICT (...) DO UPDATE upsert clause; onConflictUpdate() throws.

tableExists()

public function tableExists(
    string $tableName,
    string $schemaName = null
): string;

Generates SQL checking for the existence of a schema.table

echo $dialect->tableExists("posts", "blog");

echo $dialect->tableExists("posts");

tableOptions()

public function tableOptions(
    string $table,
    string $schema = null
): string;

Generates the SQL to describe the table creation options

truncateTable()

public function truncateTable(
    string $tableName,
    string $schemaName
): string;

Generates SQL to truncate a table

viewExists()

public function viewExists(
    string $viewName,
    string $schemaName = null
): string;

Generates SQL checking for the existence of a schema.view

Protected · 1

getTableOptions()

protected function getTableOptions( array $definition ): string;

Generates SQL to add the table creation options

Db\Dialect\Postgresql

Class Source on GitHub

Generates database specific SQL for the PostgreSQL RDBMS

Uses Phalcon\Db\CheckInterface · Phalcon\Db\Column · Phalcon\Db\ColumnInterface · Phalcon\Db\Dialect · Phalcon\Db\DialectInterface · Phalcon\Db\Exception · Phalcon\Db\Exceptions\MissingDefinitionKey · Phalcon\Db\Exceptions\ReturningRequiresColumn · Phalcon\Db\Exceptions\UnrecognizedDataType · Phalcon\Db\IndexInterface · Phalcon\Db\RawValue · Phalcon\Db\ReferenceInterface

Method Summary

public string addCheck(string $tableName,string $schemaName,CheckInterface $check) Generates SQL to add a CHECK constraint to an existing table. public string addColumn(string $tableName,string $schemaName,ColumnInterface $column) Generates SQL to add a column to a table public string addForeignKey(string $tableName,string $schemaName,ReferenceInterface $reference) Generates SQL to add an index to a table public string addIndex(string $tableName,string $schemaName,IndexInterface $index) Generates SQL to add an index to a table public string addPrimaryKey(string $tableName,string $schemaName,IndexInterface $index) Generates SQL to add the primary key to a table public string createMaterializedView(string $viewName,array $definition,string $schemaName = null) Generates SQL to create a materialized view. public string createTable(string $tableName,string $schemaName,array $definition) Generates SQL to create a table public string createView(string $viewName,array $definition,string $schemaName = null) Generates SQL to create a view public string describeColumns(string $table,string $schema = null) Generates SQL describing a table public string describeIndexes(string $table,string $schema = null) Generates SQL to query indexes on a table public string describeReferences(string $table,string $schema = null) Generates SQL to query foreign keys on a table public string dropCheck(string $tableName,string $schemaName,string $checkName) Generates SQL to delete a CHECK constraint from a table public string dropColumn(string $tableName,string $schemaName,string $columnName) Generates SQL to delete a column from a table public string dropForeignKey(string $tableName,string $schemaName,string $referenceName) Generates SQL to delete a foreign key from a table public string dropIndex(string $tableName,string $schemaName,string $indexName) Generates SQL to delete an index from a table public string dropMaterializedView(string $viewName,string $schemaName = null,bool $ifExists = true) Generates SQL to drop a materialized view. public string dropPrimaryKey(string $tableName,string $schemaName) Generates SQL to delete primary key from a table public string dropTable(string $tableName,string $schemaName = null,bool $ifExists = true) Generates SQL to drop a table public string dropView(string $viewName,string $schemaName = null,bool $ifExists = true) Generates SQL to drop a view public string getColumnDefinition( ColumnInterface $column ) Gets the column name in PostgreSQL public string listTables( string $schemaName = null ) List all tables in database public string listViews( string $schemaName = null ) Generates the SQL to list all views of a schema or user public string modifyColumn(string $tableName,string $schemaName,ColumnInterface $column,ColumnInterface $currentColumn = null) Generates SQL to modify a column in a table public string refreshMaterializedView(string $viewName,string $schemaName = null,bool $concurrent = false) Generates SQL to refresh a materialized view. When concurrent is public string returning(string $sqlQuery,array $columns) Appends a RETURNING clause to the supplied INSERT/UPDATE/DELETE public string sharedLock(string $sqlQuery,string $modifier = "") Returns a SQL modified with a FOR SHARE clause - PostgreSQL's public bool supportsMaterializedViews() PostgreSQL supports materialized views (CREATE MATERIALIZED VIEW). public bool supportsReturning() PostgreSQL supports the RETURNING clause. public string tableExists(string $tableName,string $schemaName = null) Generates SQL checking for the existence of a schema.table public string tableOptions(string $table,string $schema = null) Generates the SQL to describe the table creation options public string truncateTable(string $tableName,string $schemaName) Generates SQL to truncate a table public string viewExists(string $viewName,string $schemaName = null) Generates SQL checking for the existence of a schema.view protected string castDefault( ColumnInterface $column ) protected string getTableOptions( array $definition )

Properties

protected string $escapeChar = "\""
protected array $supportedOperators = [...]

Methods

Public · 32

addCheck()

public function addCheck(
    string $tableName,
    string $schemaName,
    CheckInterface $check
): string;

Generates SQL to add a CHECK constraint to an existing table.

addColumn()

public function addColumn(
    string $tableName,
    string $schemaName,
    ColumnInterface $column
): string;

Generates SQL to add a column to a table

addForeignKey()

public function addForeignKey(
    string $tableName,
    string $schemaName,
    ReferenceInterface $reference
): string;

Generates SQL to add an index to a table

addIndex()

public function addIndex(
    string $tableName,
    string $schemaName,
    IndexInterface $index
): string;

Generates SQL to add an index to a table

addPrimaryKey()

public function addPrimaryKey(
    string $tableName,
    string $schemaName,
    IndexInterface $index
): string;

Generates SQL to add the primary key to a table

createMaterializedView()

public function createMaterializedView(
    string $viewName,
    array $definition,
    string $schemaName = null
): string;

Generates SQL to create a materialized view.

createTable()

public function createTable(
    string $tableName,
    string $schemaName,
    array $definition
): string;

Generates SQL to create a table

createView()

public function createView(
    string $viewName,
    array $definition,
    string $schemaName = null
): string;

Generates SQL to create a view

describeColumns()

public function describeColumns(
    string $table,
    string $schema = null
): string;

Generates SQL describing a table

print_r(
    $dialect->describeColumns("posts")
);

describeIndexes()

public function describeIndexes(
    string $table,
    string $schema = null
): string;

Generates SQL to query indexes on a table

describeReferences()

public function describeReferences(
    string $table,
    string $schema = null
): string;

Generates SQL to query foreign keys on a table

dropCheck()

public function dropCheck(
    string $tableName,
    string $schemaName,
    string $checkName
): string;

Generates SQL to delete a CHECK constraint from a table

dropColumn()

public function dropColumn(
    string $tableName,
    string $schemaName,
    string $columnName
): string;

Generates SQL to delete a column from a table

dropForeignKey()

public function dropForeignKey(
    string $tableName,
    string $schemaName,
    string $referenceName
): string;

Generates SQL to delete a foreign key from a table

dropIndex()

public function dropIndex(
    string $tableName,
    string $schemaName,
    string $indexName
): string;

Generates SQL to delete an index from a table

dropMaterializedView()

public function dropMaterializedView(
    string $viewName,
    string $schemaName = null,
    bool $ifExists = true
): string;

Generates SQL to drop a materialized view.

dropPrimaryKey()

public function dropPrimaryKey(
    string $tableName,
    string $schemaName
): string;

Generates SQL to delete primary key from a table

dropTable()

public function dropTable(
    string $tableName,
    string $schemaName = null,
    bool $ifExists = true
): string;

Generates SQL to drop a table

dropView()

public function dropView(
    string $viewName,
    string $schemaName = null,
    bool $ifExists = true
): string;

Generates SQL to drop a view

getColumnDefinition()

public function getColumnDefinition( ColumnInterface $column ): string;

Gets the column name in PostgreSQL

listTables()

public function listTables( string $schemaName = null ): string;

List all tables in database

print_r(
    $dialect->listTables("blog")
);

listViews()

public function listViews( string $schemaName = null ): string;

Generates the SQL to list all views of a schema or user

modifyColumn()

public function modifyColumn(
    string $tableName,
    string $schemaName,
    ColumnInterface $column,
    ColumnInterface $currentColumn = null
): string;

Generates SQL to modify a column in a table

refreshMaterializedView()

public function refreshMaterializedView(
    string $viewName,
    string $schemaName = null,
    bool $concurrent = false
): string;

Generates SQL to refresh a materialized view. When concurrent is true, emits REFRESH MATERIALIZED VIEW CONCURRENTLY ... (avoids blocking concurrent SELECTs; requires a unique index on the view).

returning()

public function returning(
    string $sqlQuery,
    array $columns
): string;

Appends a RETURNING clause to the supplied INSERT/UPDATE/DELETE statement. Pass ["*"] for RETURNING *, or a list of column names.

sharedLock()

public function sharedLock(
    string $sqlQuery,
    string $modifier = ""
): string;

Returns a SQL modified with a FOR SHARE clause - PostgreSQL's equivalent of MySQL's LOCK IN SHARE MODE. The optional modifier appends a row-lock disposition keyword (pass Dialect::LOCK_NOWAIT or Dialect::LOCK_SKIP_LOCKED).

echo $dialect->sharedLock("SELECT * FROM robots");
// SELECT * FROM robots FOR SHARE

echo $dialect->sharedLock(
    "SELECT * FROM robots",
    Dialect::LOCK_NOWAIT
);
// SELECT * FROM robots FOR SHARE NOWAIT

supportsMaterializedViews()

public function supportsMaterializedViews(): bool;

PostgreSQL supports materialized views (CREATE MATERIALIZED VIEW).

supportsReturning()

public function supportsReturning(): bool;

PostgreSQL supports the RETURNING clause.

tableExists()

public function tableExists(
    string $tableName,
    string $schemaName = null
): string;

Generates SQL checking for the existence of a schema.table

echo $dialect->tableExists("posts", "blog");

echo $dialect->tableExists("posts");

tableOptions()

public function tableOptions(
    string $table,
    string $schema = null
): string;

Generates the SQL to describe the table creation options

truncateTable()

public function truncateTable(
    string $tableName,
    string $schemaName
): string;

Generates SQL to truncate a table

viewExists()

public function viewExists(
    string $viewName,
    string $schemaName = null
): string;

Generates SQL checking for the existence of a schema.view

Protected · 2

castDefault()

protected function castDefault( ColumnInterface $column ): string;

getTableOptions()

protected function getTableOptions( array $definition ): string;

Db\Dialect\Sqlite

Class Source on GitHub

Generates database specific SQL for the SQLite RDBMS

Uses Phalcon\Db\CheckInterface · Phalcon\Db\Column · Phalcon\Db\ColumnInterface · Phalcon\Db\Dialect · Phalcon\Db\DialectInterface · Phalcon\Db\Exception · Phalcon\Db\Exceptions\MissingDefinitionKey · Phalcon\Db\Exceptions\ReturningRequiresColumn · Phalcon\Db\Exceptions\SqliteAlterCheckNotSupported · Phalcon\Db\Exceptions\SqliteAlterColumnNotSupported · Phalcon\Db\Exceptions\SqliteAlterForeignKeyNotSupported · Phalcon\Db\Exceptions\SqliteAlterPrimaryKeyNotSupported · Phalcon\Db\Exceptions\SqliteDropCheckNotSupported · Phalcon\Db\Exceptions\SqliteDropForeignKeyNotSupported · Phalcon\Db\Exceptions\SqliteDropPrimaryKeyNotSupported · Phalcon\Db\Exceptions\UnrecognizedDataType · Phalcon\Db\IndexInterface · Phalcon\Db\RawValue · Phalcon\Db\ReferenceInterface

Method Summary

public string addCheck(string $tableName,string $schemaName,CheckInterface $check) SQLite cannot ALTER an existing table to add a CHECK constraint; public string addColumn(string $tableName,string $schemaName,ColumnInterface $column) Generates SQL to add a column to a table public string addForeignKey(string $tableName,string $schemaName,ReferenceInterface $reference) Generates SQL to add an index to a table public string addIndex(string $tableName,string $schemaName,IndexInterface $index) Generates SQL to add an index to a table public string addPrimaryKey(string $tableName,string $schemaName,IndexInterface $index) Generates SQL to add the primary key to a table public string createTable(string $tableName,string $schemaName,array $definition) Generates SQL to create a table public string createView(string $viewName,array $definition,string $schemaName = null) Generates SQL to create a view public string describeColumns(string $table,string $schema = null) Generates SQL describing a table public string describeIndex( string $index ) Generates SQL to query indexes detail on a table public string describeIndexes(string $table,string $schema = null) Generates SQL to query indexes on a table public string describeReferences(string $table,string $schema = null) Generates SQL to query foreign keys on a table public string dropCheck(string $tableName,string $schemaName,string $checkName) SQLite cannot DROP a CHECK constraint from an existing table. public string dropColumn(string $tableName,string $schemaName,string $columnName) Generates SQL to delete a column from a table. public string dropForeignKey(string $tableName,string $schemaName,string $referenceName) Generates SQL to delete a foreign key from a table public string dropIndex(string $tableName,string $schemaName,string $indexName) Generates SQL to delete an index from a table public string dropPrimaryKey(string $tableName,string $schemaName) Generates SQL to delete primary key from a table public string dropTable(string $tableName,string $schemaName = null,bool $ifExists = true) Generates SQL to drop a table public string dropView(string $viewName,string $schemaName = null,bool $ifExists = true) Generates SQL to drop a view public string forUpdate(string $sqlQuery,string $modifier = "") Returns a SQL modified with a FOR UPDATE clause. SQLite has no public string getColumnDefinition( ColumnInterface $column ) Gets the column name in SQLite public string listIndexesSql(string $table,string $schema = null,string $keyName = null) Generates the SQL to get query list of indexes public string listTables( string $schemaName = null ) List all tables in database public string listViews( string $schemaName = null ) Generates the SQL to list all views of a schema or user public string modifyColumn(string $tableName,string $schemaName,ColumnInterface $column,ColumnInterface $currentColumn = null) Generates SQL to modify a column in a table public string returning(string $sqlQuery,array $columns) Appends a RETURNING clause to the supplied INSERT/UPDATE/DELETE public string sharedLock(string $sqlQuery,string $modifier = "") SQLite has no row-level shared-lock construct, so the original query public bool supportsAlterTable() SQLite cannot modify existing columns or add/drop foreign keys, primary public bool supportsReturning() SQLite (3.35+) supports the RETURNING clause. public string tableExists(string $tableName,string $schemaName = null) Generates SQL checking for the existence of a schema.table public string tableOptions(string $table,string $schema = null) Generates the SQL to describe the table creation options public string truncateTable(string $tableName,string $schemaName) Generates SQL to truncate a table public string viewExists(string $viewName,string $schemaName = null) Generates SQL checking for the existence of a schema.view

Properties

protected string $escapeChar = "\""
protected array $supportedOperators = [...]

Methods

Public · 32

addCheck()

public function addCheck(
    string $tableName,
    string $schemaName,
    CheckInterface $check
): string;

SQLite cannot ALTER an existing table to add a CHECK constraint; the constraint must be declared at CREATE TABLE time.

addColumn()

public function addColumn(
    string $tableName,
    string $schemaName,
    ColumnInterface $column
): string;

Generates SQL to add a column to a table

addForeignKey()

public function addForeignKey(
    string $tableName,
    string $schemaName,
    ReferenceInterface $reference
): string;

Generates SQL to add an index to a table

addIndex()

public function addIndex(
    string $tableName,
    string $schemaName,
    IndexInterface $index
): string;

Generates SQL to add an index to a table

addPrimaryKey()

public function addPrimaryKey(
    string $tableName,
    string $schemaName,
    IndexInterface $index
): string;

Generates SQL to add the primary key to a table

createTable()

public function createTable(
    string $tableName,
    string $schemaName,
    array $definition
): string;

Generates SQL to create a table

createView()

public function createView(
    string $viewName,
    array $definition,
    string $schemaName = null
): string;

Generates SQL to create a view

describeColumns()

public function describeColumns(
    string $table,
    string $schema = null
): string;

Generates SQL describing a table

print_r(
    $dialect->describeColumns("posts")
);

describeIndex()

public function describeIndex( string $index ): string;

Generates SQL to query indexes detail on a table

describeIndexes()

public function describeIndexes(
    string $table,
    string $schema = null
): string;

Generates SQL to query indexes on a table

describeReferences()

public function describeReferences(
    string $table,
    string $schema = null
): string;

Generates SQL to query foreign keys on a table

dropCheck()

public function dropCheck(
    string $tableName,
    string $schemaName,
    string $checkName
): string;

SQLite cannot DROP a CHECK constraint from an existing table.

dropColumn()

public function dropColumn(
    string $tableName,
    string $schemaName,
    string $columnName
): string;

Generates SQL to delete a column from a table.

SQLite 3.35+ supports ALTER TABLE ... DROP COLUMN ... directly. On older versions the server rejects the statement at execution time; cphalcon no longer pre-empts that rejection at the dialect level so callers on 3.35+ can use the feature.

dropForeignKey()

public function dropForeignKey(
    string $tableName,
    string $schemaName,
    string $referenceName
): string;

Generates SQL to delete a foreign key from a table

dropIndex()

public function dropIndex(
    string $tableName,
    string $schemaName,
    string $indexName
): string;

Generates SQL to delete an index from a table

dropPrimaryKey()

public function dropPrimaryKey(
    string $tableName,
    string $schemaName
): string;

Generates SQL to delete primary key from a table

dropTable()

public function dropTable(
    string $tableName,
    string $schemaName = null,
    bool $ifExists = true
): string;

Generates SQL to drop a table

dropView()

public function dropView(
    string $viewName,
    string $schemaName = null,
    bool $ifExists = true
): string;

Generates SQL to drop a view

forUpdate()

public function forUpdate(
    string $sqlQuery,
    string $modifier = ""
): string;

Returns a SQL modified with a FOR UPDATE clause. SQLite has no row-level locking, so the original query is returned unchanged regardless of the modifier argument (NOWAIT / SKIP LOCKED are silently ignored).

getColumnDefinition()

public function getColumnDefinition( ColumnInterface $column ): string;

Gets the column name in SQLite

listIndexesSql()

public function listIndexesSql(
    string $table,
    string $schema = null,
    string $keyName = null
): string;

Generates the SQL to get query list of indexes

print_r(
    $dialect->listIndexesSql("blog")
);

listTables()

public function listTables( string $schemaName = null ): string;

List all tables in database

print_r(
    $dialect->listTables("blog")
);

listViews()

public function listViews( string $schemaName = null ): string;

Generates the SQL to list all views of a schema or user

modifyColumn()

public function modifyColumn(
    string $tableName,
    string $schemaName,
    ColumnInterface $column,
    ColumnInterface $currentColumn = null
): string;

Generates SQL to modify a column in a table

returning()

public function returning(
    string $sqlQuery,
    array $columns
): string;

Appends a RETURNING clause to the supplied INSERT/UPDATE/DELETE statement. Supported by SQLite 3.35+. Pass ["*"] for RETURNING *, or a list of column names.

sharedLock()

public function sharedLock(
    string $sqlQuery,
    string $modifier = ""
): string;

SQLite has no row-level shared-lock construct, so the original query is returned unchanged regardless of the modifier argument.

supportsAlterTable()

public function supportsAlterTable(): bool;

SQLite cannot modify existing columns or add/drop foreign keys, primary keys, or check constraints through ALTER TABLE; those operations throw a dedicated Sqlite*NotSupported exception.

supportsReturning()

public function supportsReturning(): bool;

SQLite (3.35+) supports the RETURNING clause.

tableExists()

public function tableExists(
    string $tableName,
    string $schemaName = null
): string;

Generates SQL checking for the existence of a schema.table

echo $dialect->tableExists("posts", "blog");

echo $dialect->tableExists("posts");

tableOptions()

public function tableOptions(
    string $table,
    string $schema = null
): string;

Generates the SQL to describe the table creation options

truncateTable()

public function truncateTable(
    string $tableName,
    string $schemaName
): string;

Generates SQL to truncate a table

viewExists()

public function viewExists(
    string $viewName,
    string $schemaName = null
): string;

Generates SQL checking for the existence of a schema.view

Db\Enum

Class Source on GitHub

Constants for Phalcon\Db

  • Phalcon\Db\Enum

Constants

int FETCH_ASSOC = \PDO::FETCH_ASSOC
int FETCH_BOTH = \PDO::FETCH_BOTH
int FETCH_BOUND = \PDO::FETCH_BOUND
int FETCH_CLASS = \PDO::FETCH_CLASS
int FETCH_CLASSTYPE = \PDO::FETCH_CLASSTYPE
int FETCH_COLUMN = \PDO::FETCH_COLUMN
int FETCH_DEFAULT = \PDO::FETCH_DEFAULT
int FETCH_FUNC = \PDO::FETCH_FUNC
int FETCH_GROUP = \PDO::FETCH_GROUP
int FETCH_INTO = \PDO::FETCH_INTO
int FETCH_KEY_PAIR = \PDO::FETCH_KEY_PAIR
int FETCH_LAZY = \PDO::FETCH_LAZY
int FETCH_NAMED = \PDO::FETCH_NAMED
int FETCH_NUM = \PDO::FETCH_NUM
int FETCH_OBJ = \PDO::FETCH_OBJ
int FETCH_ORI_NEXT = \PDO::FETCH_ORI_NEXT
int FETCH_PROPS_LATE = \PDO::FETCH_PROPS_LATE
int FETCH_SERIALIZE = \PDO::FETCH_SERIALIZE
int FETCH_UNIQUE = \PDO::FETCH_UNIQUE

Db\Exception

Class Source on GitHub

Exceptions thrown in Phalcon\Db will use this class

Db\Exceptions\CannotInsertWithoutData

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $table );

Db\Exceptions\CannotPrepareStatement

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\CheckExpressionRequired

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\ColumnTypeRejectsAutoIncrement

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\ColumnTypeRejectsScale

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\ColumnTypeRequired

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\ConflictTargetColumnRequired

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\ConflictUpdateColumnRequired

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\ForeignKeyColumnsRequired

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\GeneratedAutoIncrementConflict

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\GeneratedDefaultConflict

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\IncompleteBindTypes

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidBindParameter

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidCheckExpression

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidDialectClass

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $className );

Db\Exceptions\InvalidGenerationExpression

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidGroupByExpression

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidIndexColumns

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidIndexDirections

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidIndexWhere

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidListExpression

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidOrderByExpression

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidSqlExpression

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidSqlExpressionType

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $type );

Db\Exceptions\InvalidUnaryExpression

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidWhereConditions

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\InvalidWkb

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $reason );

Db\Exceptions\MatchedParameterNotFound

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\MaterializedViewsNotSupported

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\MissingDefinitionKey

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $key );

Db\Exceptions\MissingForeignKeyChecks

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\MissingSqliteDatabase

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\MysqlOnConflictNotSupported

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\NestedTransactionChangeBlocked

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\NoActiveTransaction

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\ReferencedColumnCountMismatch

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\ReferencedColumnsRequired

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\ReferencedTableRequired

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\ReturningNotSupported

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\ReturningRequiresColumn

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\SavepointsNotSupported

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\SqliteAlterCheckNotSupported

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\SqliteAlterColumnNotSupported

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\SqliteAlterForeignKeyNotSupported

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\SqliteAlterPrimaryKeyNotSupported

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\SqliteDropCheckNotSupported

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\SqliteDropForeignKeyNotSupported

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\SqliteDropPrimaryKeyNotSupported

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\TableMustHaveColumn

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Exceptions\UnrecognizedDataType

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct(
    string $dialect,
    string $column
);

Db\Exceptions\UnsupportedOperator

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $operator );

Db\Exceptions\UpdateFieldCountMismatch

Class Source on GitHub

Uses Phalcon\Db\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Db\Geometry\AbstractGeometry

Abstract Source on GitHub

Method Summary

Properties

protected int $srid = 0

Methods

Public · 4

__toString()

public function __toString(): string;

getSrid()

public function getSrid(): int;

getType()

abstract public function getType(): int;

toWkt()

abstract public function toWkt(): string;

Db\Geometry\GeometryCollection

Class Source on GitHub

Uses Phalcon\Db\Column

Method Summary

Properties

protected array $geometries

Methods

Public · 4

__construct()

public function __construct(
    array $geometries,
    int $srid = 0
);

getGeometries()

public function getGeometries(): array;

getType()

public function getType(): int;

toWkt()

public function toWkt(): string;

Db\Geometry\GeometryInterface

Interface Source on GitHub

Phalcon\Db\Geometry\GeometryInterface

Uses Phalcon\Contracts\Db\Geometry\Geometry

Db\Geometry\LineString

Class Source on GitHub

Uses Phalcon\Db\Column

Method Summary

Properties

protected array $points

Methods

Public · 5

__construct()

public function __construct(
    array $points,
    int $srid = 0
);

getPoints()

public function getPoints(): array;

getType()

public function getType(): int;

pointsWkt()

public function pointsWkt(): string;

toWkt()

public function toWkt(): string;

Db\Geometry\MultiLineString

Class Source on GitHub

Uses Phalcon\Db\Column

Method Summary

Properties

protected array $lineStrings

Methods

Public · 4

__construct()

public function __construct(
    array $lineStrings,
    int $srid = 0
);

getLineStrings()

public function getLineStrings(): array;

getType()

public function getType(): int;

toWkt()

public function toWkt(): string;

Db\Geometry\MultiPoint

Class Source on GitHub

Uses Phalcon\Db\Column

Method Summary

Properties

protected array $points

Methods

Public · 4

__construct()

public function __construct(
    array $points,
    int $srid = 0
);

getPoints()

public function getPoints(): array;

getType()

public function getType(): int;

toWkt()

public function toWkt(): string;

Db\Geometry\MultiPolygon

Class Source on GitHub

Uses Phalcon\Db\Column

Method Summary

Properties

protected array $polygons

Methods

Public · 4

__construct()

public function __construct(
    array $polygons,
    int $srid = 0
);

getPolygons()

public function getPolygons(): array;

getType()

public function getType(): int;

toWkt()

public function toWkt(): string;

Db\Geometry\Point

Class Source on GitHub

Uses Phalcon\Db\Column

Method Summary

Properties

protected float $x
protected float $y

Methods

Public · 6

__construct()

public function __construct(
    double $x,
    double $y,
    int $srid = 0
);

coordsWkt()

public function coordsWkt(): string;

getType()

public function getType(): int;

getX()

public function getX(): double;

getY()

public function getY(): double;

toWkt()

public function toWkt(): string;

Db\Geometry\Polygon

Class Source on GitHub

Uses Phalcon\Db\Column

Method Summary

Properties

protected array $rings

Methods

Public · 5

__construct()

public function __construct(
    array $rings,
    int $srid = 0
);

getRings()

public function getRings(): array;

getType()

public function getType(): int;

ringsWkt()

public function ringsWkt(): string;

toWkt()

public function toWkt(): string;

Db\Geometry\WkbParser

Class Source on GitHub

Decodes a spatial column value into a geometry value object.

Handles MySQL's internal format (4-byte little-endian SRID prefix followed by standard OGC WKB) and PostGIS EWKB returned as a hex string. 2D only: any Z/M ordinates are read past and discarded.

  • Phalcon\Db\Geometry\WkbParser

Uses Phalcon\Db\Exceptions\InvalidWkb

Method Summary

Properties

protected string $buffer = ""
protected int $length = 0
protected int $position = 0

Methods

Public · 1

parse()

public function parse( string $raw ): GeometryInterface;
Protected · 8

readByte()

protected function readByte(): int;

readDouble()

protected function readDouble( bool $little ): double;

readGeometry()

protected function readGeometry( int $outerSrid ): GeometryInterface;

readPoint()

protected function readPoint(
    bool $little,
    bool $hasZ,
    bool $hasM,
    int $srid
): Point;

readPointList()

protected function readPointList(
    bool $little,
    bool $hasZ,
    bool $hasM
): array;

readRingList()

protected function readRingList(
    bool $little,
    bool $hasZ,
    bool $hasM
): array;

readUint32()

protected function readUint32( bool $little ): int;

skipExtraOrdinates()

protected function skipExtraOrdinates(
    bool $little,
    bool $hasZ,
    bool $hasM
): void;

Db\Index

Class Source on GitHub

Allows to define indexes to be used on tables. Indexes are a common way to enhance database performance. An index allows the database server to find and retrieve specific rows much faster than it could do without an index.

The constructor accepts either the legacy positional form (a plain array of column names) or a definition-array form (an associative array with a columns key); the latter is the path used by features such as invisible (MySQL 8.0+) and is the form that future per-index modifiers will extend.

// Legacy positional form
$unique = new \Phalcon\Db\Index(
    'column_UNIQUE',
    [
        'column',
    ],
    'UNIQUE'
);

$primary = new \Phalcon\Db\Index(
    'PRIMARY',
    [
        'column',
    ]
);

// Definition-array form (MySQL 8.0+ invisible index)
$hidden = new \Phalcon\Db\Index(
    'idx_hidden',
    [
        'columns'   => ['col1'],
        'type'      => '',
        'invisible' => true,
    ]
);

$connection->addIndex("robots", null, $unique);
$connection->addIndex("robots", null, $primary);
$connection->addIndex("robots", null, $hidden);

Uses Phalcon\Db\Exceptions\InvalidIndexColumns · Phalcon\Db\Exceptions\InvalidIndexDirections · Phalcon\Db\Exceptions\InvalidIndexWhere

Method Summary

Properties

protected array $columns Index columns
protected bool $concurrent = false Whether to build the index without taking a strong lock that blocks writes - emits CONCURRENTLY between INDEX and the index name on PostgreSQL (CREATE INDEX CONCURRENTLY name ON ...). MySQL and SQLite have no equivalent and ignore the flag.
protected array $directions = [] Per-column sort directions (ASC / DESC). Empty array means "emit no per-column direction" - preserves the legacy plain (col1, col2) rendering. When populated, entries shorter than the columns list default to ASC for the missing positions.
protected bool $invisible = false Whether the index is declared INVISIBLE (MySQL 8.0+). Invisible indexes are ignored by the optimizer - useful for testing what happens when an index is removed before actually dropping it. PostgreSQL and SQLite have no equivalent and ignore the flag.
protected string $name Index name
protected string $type = "" Index type
protected string $where = "" Optional partial-index WHERE predicate. Supported by PostgreSQL and SQLite (CREATE INDEX ... WHERE <expr>); MySQL has no partial-index concept and its dialect ignores this value. Empty string means no predicate.

Methods

Public · 8

__construct()

public function __construct(
    string $name,
    array $columnsOrDefinition,
    string $type = ""
);

Phalcon\Db\Index constructor.

Accepts either the legacy positional form (name, columns, type) or a definition-array form (name, ["columns" => [...], "type" => "...", "invisible" => true, ...]). Detection is based on the presence of a columns key in the second argument; when present, the third positional type argument is ignored in favor of the definition.

getColumns()

public function getColumns(): array;

Index columns

getDirections()

public function getDirections(): array;

Returns the per-column sort directions array (ASC / DESC). Empty array means the index was declared without explicit per-column directions and dialects emit the columns plainly. When populated, entries are aligned with getColumns(); missing trailing positions default to ASC at emission time.

getName()

public function getName(): string;

Index name

getType()

public function getType(): string;

Index type

getWhere()

public function getWhere(): string;

Returns the partial-index WHERE predicate, or an empty string when the index has none. Supported by PostgreSQL and SQLite; ignored by the MySQL dialect (MySQL has no partial-index feature).

isConcurrent()

public function isConcurrent(): bool;

Whether the index is built CONCURRENTLY (PostgreSQL only). MySQL and SQLite have no equivalent and ignore the flag.

isInvisible()

public function isInvisible(): bool;

Whether the index is declared INVISIBLE (MySQL 8.0+). Invisible indexes are ignored by the optimizer but still maintained, so they can be flipped back to visible without a rebuild.

Db\IndexInterface

Interface Source on GitHub

Phalcon\Db\IndexInterface

Uses Phalcon\Contracts\Db\Index

Db\Profiler

Class Source on GitHub

Instances of Phalcon\Db can generate execution profiles on SQL statements sent to the relational database. Profiled information includes execution time in milliseconds. This helps you to identify bottlenecks in your applications.

use Phalcon\Db\Profiler;
use Phalcon\Events\Event;
use Phalcon\Events\Manager;

$profiler = new Profiler();
$eventsManager = new Manager();

$eventsManager->attach(
    "db",
    function (Event $event, $connection) use ($profiler) {
        if ($event->getType() === "beforeQuery") {
            $sql = $connection->getSQLStatement();

            // Start a profile with the active connection
            $profiler->startProfile($sql);
        }

        if ($event->getType() === "afterQuery") {
            // Stop the active profile
            $profiler->stopProfile();
        }
    }
);

// Set the event manager on the connection
$connection->setEventsManager($eventsManager);

$sql = "SELECT buyer_name, quantity, product_name
FROM buyers LEFT JOIN products ON
buyers.pid=products.id";

// Execute a SQL statement
$connection->query($sql);

// Get the last profile in the profiler
$profile = $profiler->getLastProfile();

echo "SQL Statement: ", $profile->getSQLStatement(), "\n";
echo "Start Time: ", $profile->getInitialTime(), "\n";
echo "Final Time: ", $profile->getFinalTime(), "\n";
echo "Total Elapsed Time: ", $profile->getTotalElapsedSeconds(), "\n";
  • Phalcon\Db\Profiler

Uses Phalcon\Db\Profiler\Item

Method Summary

Properties

protected Item $activeProfile Active Item
protected Item[] $allProfiles All the Items in the active profile
protected int $maxProfiles = 0 Maximum number of profiles to retain. 0 (default) keeps the original unbounded behavior; a positive value drops the oldest profile FIFO before a new one is appended.
protected float $totalNanoseconds = 0 Total time spent by all profiles to complete in nanoseconds

Methods

Public · 11

getLastProfile()

public function getLastProfile(): Item;

Returns the last profile executed in the profiler

getMaxProfiles()

public function getMaxProfiles(): int;

Returns the configured maximum number of retained profiles (0 = unlimited)

getNumberTotalStatements()

public function getNumberTotalStatements(): int;

Returns the total number of SQL statements processed

getProfiles()

public function getProfiles(): Item[];

Returns all the processed profiles

getTotalElapsedMilliseconds()

public function getTotalElapsedMilliseconds(): double;

Returns the total time in milliseconds spent by the profiles

getTotalElapsedNanoseconds()

public function getTotalElapsedNanoseconds(): double;

Returns the total time in nanoseconds spent by the profiles

getTotalElapsedSeconds()

public function getTotalElapsedSeconds(): double;

Returns the total time in seconds spent by the profiles

reset()

public function reset(): static;

Resets the profiler, cleaning up all the profiles

setMaxProfiles()

public function setMaxProfiles( int $maxProfiles ): static;

Sets the maximum number of retained profiles. 0 disables the cap (the default; preserves the original unbounded behavior).

startProfile()

public function startProfile(
    string $sqlStatement,
    array $sqlVariables = [],
    array $sqlBindTypes = []
): static;

Starts the profile of a SQL sentence

stopProfile()

public function stopProfile(): static;

Stops the active profile

Db\Profiler\Item

Class Source on GitHub

This class identifies each profile in a Phalcon\Db\Profiler

  • Phalcon\Db\Profiler\Item

Method Summary

Properties

protected double $finalTime Timestamp when the profile ended
protected double $initialTime Timestamp when the profile started
protected array $sqlBindTypes SQL bind types related to the profile
protected string $sqlStatement SQL statement related to the profile
protected array $sqlVariables SQL variables related to the profile

Methods

Public · 13

getFinalTime()

public function getFinalTime(): double;

Return the timestamp when the profile ended

getInitialTime()

public function getInitialTime(): double;

Return the timestamp when the profile started

getSqlBindTypes()

public function getSqlBindTypes(): array;

Return the SQL bind types related to the profile

getSqlStatement()

public function getSqlStatement(): string;

Return the SQL statement related to the profile

getSqlVariables()

public function getSqlVariables(): array;

Return the SQL variables related to the profile

getTotalElapsedMilliseconds()

public function getTotalElapsedMilliseconds(): double;

Returns the total time in milliseconds spent by the profile

getTotalElapsedNanoseconds()

public function getTotalElapsedNanoseconds(): double;

Returns the total time in nanoseconds spent by the profile

getTotalElapsedSeconds()

public function getTotalElapsedSeconds(): double;

Returns the total time in seconds spent by the profile

setFinalTime()

public function setFinalTime( double $finalTime ): static;

Return the timestamp when the profile ended

setInitialTime()

public function setInitialTime( double $initialTime ): static;

Return the timestamp when the profile started

setSqlBindTypes()

public function setSqlBindTypes( array $sqlBindTypes ): static;

Return the SQL bind types related to the profile

setSqlStatement()

public function setSqlStatement( string $sqlStatement ): static;

Return the SQL statement related to the profile

setSqlVariables()

public function setSqlVariables( array $sqlVariables ): static;

Return the SQL variables related to the profile

Db\RawValue

Class Source on GitHub

This class allows to insert/update raw data without quoting or formatting.

The next example shows how to use the MySQL now() function as a field value.

$subscriber = new Subscribers();

$subscriber->email     = "andres@phalcon.io";
$subscriber->createdAt = new \Phalcon\Db\RawValue("now()");

$subscriber->save();
  • Phalcon\Db\RawValue

Method Summary

Properties

protected string $value Raw value without quoting or formatting

Methods

Public · 3

__construct()

public function __construct( mixed $value );

Phalcon\Db\RawValue constructor

__toString()

public function __toString(): string;

getValue()

public function getValue(): string;

Db\Reference

Class Source on GitHub

Allows to define reference constraints on tables

$reference = new \Phalcon\Db\Reference(
    "field_fk",
    [
        "referencedSchema"  => "invoicing",
        "referencedTable"   => "products",
        "columns"           => [
            "producttype",
            "product_code",
        ],
        "referencedColumns" => [
            "type",
            "code",
        ],
    ]
);

Uses Phalcon\Db\Exceptions\ForeignKeyColumnsRequired · Phalcon\Db\Exceptions\ReferencedColumnCountMismatch · Phalcon\Db\Exceptions\ReferencedColumnsRequired · Phalcon\Db\Exceptions\ReferencedTableRequired

Method Summary

Properties

protected array $columns Local reference columns
protected string $name Constraint name
protected string $onDelete ON DELETE
protected string $onUpdate ON UPDATE
protected array $referencedColumns Referenced Columns
protected string $referencedSchema Referenced Schema
protected string $referencedTable Referenced Table
protected string $schemaName Schema name

Methods

Public · 9

__construct()

public function __construct(
    string $name,
    array $definition
);

Phalcon\Db\Reference constructor

getColumns()

public function getColumns(): array;

Local reference columns

getName()

public function getName(): string;

Constraint name

getOnDelete()

public function getOnDelete(): string|null;

ON DELETE

getOnUpdate()

public function getOnUpdate(): string|null;

ON UPDATE

getReferencedColumns()

public function getReferencedColumns(): array;

Referenced Columns

getReferencedSchema()

public function getReferencedSchema(): string|null;

Referenced Schema

getReferencedTable()

public function getReferencedTable(): string;

Referenced Table

getSchemaName()

public function getSchemaName(): string|null;

Schema name

Db\ReferenceInterface

Interface Source on GitHub

Phalcon\Db\ReferenceInterface

Uses Phalcon\Contracts\Db\Reference

Db\ResultInterface

Interface Source on GitHub

Phalcon\Db\ResultInterface

Uses Phalcon\Contracts\Db\Result

Db\Result\PdoResult

Class Source on GitHub

Encapsulates the resultset internals

$result = $connection->query("SELECT * FROM robots ORDER BY name");

$result->setFetchMode(
    \Phalcon\Db\Enum::FETCH_NUM
);

while ($robot = $result->fetchArray()) {
    print_r($robot);
}

Uses Phalcon\Db\Adapter\AdapterInterface · Phalcon\Db\Enum · Phalcon\Db\ResultInterface

Method Summary

Properties

protected array $bindParams = []
protected array $bindTypes = []
protected AdapterInterface $connection
protected int $fetchMode = Enum::FETCH_DEFAULT Active fetch mode
protected \PDOStatement $pdoStatement Internal resultset
protected mixed $result
protected int|null $rowCount = null
protected string|null $sqlStatement = null

Methods

Public · 9

__construct()

public function __construct(
    AdapterInterface $connection,
    \PDOStatement $result,
    mixed $sqlStatement = null,
    mixed $bindParams = null,
    mixed $bindTypes = null
);

Phalcon\Db\Result\Pdo constructor

dataSeek()

public function dataSeek( int $number ): void;

Moves internal resultset cursor to another position letting us to fetch a certain row

$result = $connection->query(
    "SELECT * FROM robots ORDER BY name"
);

// Move to third row on result
$result->dataSeek(2);

// Fetch third row
$row = $result->fetch();

execute()

public function execute(): bool;

Allows to execute the statement again. Some database systems don't support scrollable cursors. So, as cursors are forward only, we need to execute the cursor again to fetch rows from the beginning

fetch()

public function fetch(
    int $fetchStyle = null,
    int $cursorOrientation = Enum::FETCH_ORI_NEXT,
    int $cursorOffset = 0
);

Fetches an array/object of strings that corresponds to the fetched row, or FALSE if there are no more rows. This method is affected by the active fetch flag set using Phalcon\Db\Result\Pdo::setFetchMode()

$result = $connection->query("SELECT * FROM robots ORDER BY name");

$result->setFetchMode(
    \Phalcon\Enum::FETCH_OBJ
);

while ($robot = $result->fetch()) {
    echo $robot->name;
}

fetchAll()

public function fetchAll(
    int $mode = Enum::FETCH_DEFAULT,
    mixed $fetchArgument = Enum::FETCH_ORI_NEXT,
    mixed $constructorArgs = null
): array;

Returns an array of arrays containing all the records in the result This method is affected by the active fetch flag set using Phalcon\Db\Result\Pdo::setFetchMode()

$result = $connection->query(
    "SELECT * FROM robots ORDER BY name"
);

$robots = $result->fetchAll();

fetchArray()

public function fetchArray();

Returns an array of strings that corresponds to the fetched row, or FALSE if there are no more rows. This method is affected by the active fetch flag set using Phalcon\Db\Result\Pdo::setFetchMode()

$result = $connection->query("SELECT * FROM robots ORDER BY name");

$result->setFetchMode(
    \Phalcon\Enum::FETCH_NUM
);

while ($robot = result->fetchArray()) {
    print_r($robot);
}

getInternalResult()

public function getInternalResult(): \PDOStatement;

Gets the internal PDO result object

numRows()

public function numRows(): int;

Gets number of rows returned by a resultset

$result = $connection->query(
    "SELECT * FROM robots ORDER BY name"
);

echo "There are ", $result->numRows(), " rows in the resultset";

setFetchMode()

public function setFetchMode(
    int $fetchMode,
    mixed $colNoOrClassNameOrObject = null,
    mixed $ctorargs = null
): bool;

Changes the fetching mode affecting Phalcon\Db\Result\Pdo::fetch()

// Return array with integer indexes
$result->setFetchMode(
    \Phalcon\Enum::FETCH_NUM
);

// Return associative array without integer indexes
$result->setFetchMode(
    \Phalcon\Enum::FETCH_ASSOC
);

// Return associative array together with integer indexes
$result->setFetchMode(
    \Phalcon\Enum::FETCH_BOTH
);

// Return an object
$result->setFetchMode(
    \Phalcon\Enum::FETCH_OBJ
);