Phalcon db
NOTE
All classes are prefixed with Phalcon
Db\Adapter\AbstractAdapter
¶
-
Namespace
Phalcon\Db\Adapter
-
Uses
Phalcon\Db\CheckInterfacePhalcon\Db\ColumnInterfacePhalcon\Db\DialectInterfacePhalcon\Db\EnumPhalcon\Db\ExceptionPhalcon\Db\IndexPhalcon\Db\IndexInterfacePhalcon\Db\RawValuePhalcon\Db\ReferencePhalcon\Db\ReferenceInterfacePhalcon\Events\EventsAwareInterfacePhalcon\Events\ManagerInterfacePhalcon\Support\Settings
-
Extends
-
Implements
AdapterInterfaceEventsAwareInterface
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(
"SELECTFROM co_invoices LIMIT 5"
);
$result->setFetchMode(Enum::FETCH_NUM);
while ($invoice = $result->fetch()) {
print_r($invoice);
}
} catch (Exception $e) {
echo $e->getMessage(), PHP_EOL;
}
Properties¶
/**
* Connection ID
*
* @var int
*/
protected static $connectionConsecutive = ;
/**
* Active connection ID
*
* @var int
*/
protected $connectionId;
/**
* Descriptor used to connect to a database
*
* @var array
*/
protected $descriptor;
/**
* Dialect instance
*
* @var object
*/
protected $dialect;
/**
* Name of the dialect used
*
* @var string
*/
protected $dialectType;
/**
* Event Manager
*
* @var ManagerInterface|null
*/
protected $eventsManager;
/**
* The real SQL statement - what was executed
*
* @var string
*/
protected $realSqlStatement;
/**
* Active SQL Bind Types
*
* @var array
*/
protected $sqlBindTypes;
/**
* Active SQL Statement
*
* @var string
*/
protected $sqlStatement;
/**
* Active SQL bound parameter variables
*
* @var array
*/
protected $sqlVariables;
/**
* Current transaction level
*
* @var int
*/
protected $transactionLevel = ;
/**
* Whether the database supports transactions with save points
*
* @var bool
*/
protected $transactionsWithSavepoints = false;
/**
* Type of database system the adapter is used for
*
* @var string
*/
protected $type;
Methods¶
Phalcon\Db\Adapter constructor Adds a CHECK constraint to a table. MySQL 8.0.16+ and PostgreSQL issueALTER TABLE ... ADD CONSTRAINT ... CHECK (...); SQLite throws. Adds a column to a table public function addForeignKey( string $tableName, string $schemaName, ReferenceInterface $reference ): bool;
public function addPrimaryKey( string $tableName, string $schemaName, IndexInterface $index ): bool;
public function createMaterializedView( string $viewName, array $definition, string $schemaName = null ): bool;
public function delete( mixed $table, string $whereCondition = null, array $placeholders = [], array $dataTypes = [] ): bool;
// Deleting existing robot
$success = $connection->delete(
"robots",
"id = 101"
);
// Next SQL sentence is generated
DELETE FROM `robots` WHERE `id` = 101
public function dropForeignKey( string $tableName, string $schemaName, string $referenceName ): bool;
public function dropMaterializedView( string $viewName, string $schemaName = null, bool $ifExists = bool ): bool;
public function dropTable( string $tableName, string $schemaName = null, bool $ifExists = bool ): bool;
public function dropView( string $viewName, string $schemaName = null, bool $ifExists = bool ): bool;
$escapedTable = $connection->escapeIdentifier(
"robots"
);
$escapedTable = $connection->escapeIdentifier(
[
"store",
"robots",
]
);
public function fetchAll( string $sqlQuery, int $fetchMode = static-constant-access, array $bindParams = [], array $bindTypes = [] ): array;
// Getting all robots with associative indexes only
$robots = $connection->fetchAll(
"SELECTFROM 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(
"SELECTFROM robots WHERE name LIKE :name",
\Phalcon\Db\Enum::FETCH_ASSOC,
[
"name" => "%robot%",
]
);
foreach($robots as $robot) {
print_r($robot);
}
public function fetchColumn( string $sqlQuery, array $placeholders = [], mixed $column = int ): string | bool;
// 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);
public function fetchOne( string $sqlQuery, mixed $fetchMode = static-constant-access, array $bindParams = [], array $bindTypes = [] ): array;
// Getting first robot
$robot = $connection->fetchOne("SELECTFROM robots");
print_r($robot);
// Getting first robot with associative indexes only
$robot = $connection->fetchOne(
"SELECTFROM robots",
\Phalcon\Db\Enum::FETCH_ASSOC
);
print_r($robot);
modifier is passed straight to the dialect (use Dialect::LOCK_NOWAIT / Dialect::LOCK_SKIP_LOCKED / Dialect::LOCK_NONE). Returns the SQL column definition from a column Gets a list of columns Gets the active connection unique identifier 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",
]
);
// 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
Return descriptor used to connect to the active database Returns internal dialect instance Name of the dialect used Returns the internal event manager Returns the savepoint name to use for nested transactions Active SQL statement in the object without replace bound parameters Active SQL statement in the object Active SQL statement in the object Active SQL variables in the object Type of database system the adapter is used forpublic function insert( string $table, array $values, mixed $fields = null, mixed $dataTypes = null ): bool;
// 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);
// 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);
public function modifyColumn( string $tableName, string $schemaName, ColumnInterface $column, ColumnInterface $currentColumn = null ): bool;
public function onConflictUpdate( string $sqlQuery, array $conflictColumns, array $updateColumns ): string;
ON CONFLICT (...) DO UPDATE SET col = excluded.col upsert clause to the supplied INSERT statement. Supported by PostgreSQL and SQLite 3.24+; MySQL throws. public function refreshMaterializedView( string $viewName, string $schemaName = null, bool $concurrent = bool ): bool;
concurrent = true for non-blocking refresh. Releases given savepoint 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. Rollbacks given savepoint Sets the dialect used to produce the SQL Sets the event manager public function setNestedTransactionsWithSavepoints( bool $nestedTransactionsWithSavepoints ): AdapterInterface;
modifier is passed straight to the dialect (use Dialect::LOCK_NOWAIT / Dialect::LOCK_SKIP_LOCKED for PostgreSQL). Check whether the database system requires a sequence to produce auto-numeric values Check whether the database system support the DEFAULT keyword (SQLite does not support it) @deprecated Will re removed in the next version
Generates SQL checking for the existence of a schema.table Gets creation options from a tablepublic function update( string $table, mixed $fields, mixed $values, mixed $whereCondition = null, mixed $dataTypes = null ): bool;
// 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.
public function updateAsDict( string $table, mixed $data, mixed $whereCondition = null, mixed $dataTypes = null ): bool;
// 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
Db\Adapter\AdapterInterface
¶
-
Namespace
Phalcon\Db\Adapter
-
Uses
Phalcon\Contracts\Db\Adapter\Adapter
-
Extends
AdapterContract -
Implements
Phalcon\Db\Adapter\AdapterInterface
@psalm-suppress DeprecatedInterface @deprecated Will be removed in a future major release. Use {@see \Phalcon\Contracts\Db\Adapter\Adapter} instead.
Db\Adapter\Pdo\AbstractPdo
¶
-
Namespace
Phalcon\Db\Adapter\Pdo
-
Uses
Phalcon\Db\Adapter\AbstractAdapterPhalcon\Db\ColumnPhalcon\Db\ExceptionPhalcon\Db\ResultInterfacePhalcon\Db\Result\PdoResultPhalcon\Events\ManagerInterfacePhalcon\Support\Settings
-
Extends
AbstractAdapter -
Implements
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);
Properties¶
/**
* Last affected rows
*
* @var int
*/
protected $affectedRows = ;
/**
* PDO Handler
*
* @var \PDO
*/
protected $pdo;
Methods¶
Constructor for Phalcon\Db\Adapter\Pdo Returns the number of affected rows by the latest INSERT/UPDATE/DELETE executed in the database system Starts a transaction in the connection Closes the active connection returning success. Phalcon automatically closes and destroys active connections when the request ends Commits the active transaction in the connection 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();
print_r(
$connection->convertBoundParams(
"SELECTFROM robots WHERE name = :name:",
[
"Bender",
]
)
);
public function execute( string $sqlStatement, array $bindParams = [], array $bindTypes = [] ): bool;
// Inserting data
$success = $connection->execute(
"INSERT INTO robots VALUES (1, 'Astro Boy')"
);
$success = $connection->execute(
"INSERT INTO robots VALUES (?, ?)",
[
1,
"Astro Boy",
]
);
public function executePrepared( \PDOStatement $statement, array $placeholders, mixed $dataTypes ): \PDOStatement;
use Phalcon\Db\Column;
$statement = $db->prepare(
"SELECTFROM robots WHERE name = :name"
);
$result = $connection->executePrepared(
$statement,
[
"name" => "Voltron",
],
[
"name" => Column::BIND_PARAM_STR,
]
);
// Inserting a new robot
$success = $connection->insert(
"robots",
[
"Astro Boy",
1952,
],
[
"name",
"year",
]
);
// Getting the generated id
$id = $connection->lastInsertId();
use Phalcon\Db\Column;
$statement = $db->prepare(
"SELECTFROM robots WHERE name = :name"
);
$result = $connection->executePrepared(
$statement,
[
"name" => "Voltron",
],
[
"name" => Column::BIND_PARAM_INT,
]
);
public function query( string $sqlStatement, array $bindParams = [], array $bindTypes = [] ): ResultInterface | bool;
// Querying data
$resultset = $connection->query(
"SELECTFROM robots WHERE type = 'mechanical'"
);
$resultset = $connection->query(
"SELECTFROM robots WHERE type = ?",
[
"mechanical",
]
);
@see https://stackoverflow.com/a/8403150
Db\Adapter\Pdo\Mysql¶
-
Namespace
Phalcon\Db\Adapter\Pdo
-
Uses
Phalcon\Db\Adapter\Pdo\AbstractPdoPhalcon\Db\ColumnPhalcon\Db\ColumnInterfacePhalcon\Db\EnumPhalcon\Db\ExceptionPhalcon\Db\IndexPhalcon\Db\IndexInterfacePhalcon\Db\ReferencePhalcon\Db\ReferenceInterface
-
Extends
PdoAdapter -
Implements
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);
Properties¶
Methods¶
public function addForeignKey( string $tableName, string $schemaName, ReferenceInterface $reference ): bool;
Db\Adapter\Pdo\Postgresql¶
-
Namespace
Phalcon\Db\Adapter\Pdo
-
Uses
Phalcon\Db\Adapter\Pdo\AbstractPdoPhalcon\Db\ColumnPhalcon\Db\ColumnInterfacePhalcon\Db\EnumPhalcon\Db\ExceptionPhalcon\Db\RawValuePhalcon\Db\ReferencePhalcon\Db\ReferenceInterfaceThrowable
-
Extends
PdoAdapter -
Implements
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);
Properties¶
/**
* @var string
*/
protected $dialectType = postgresql;
/**
* @var string
*/
protected $type = pgsql;
Methods¶
Constructor for Phalcon\Db\Adapter\Pdo\Postgresql This method is automatically called in Phalcon\Db\Adapter\Pdo constructor. Call it when you need to restore a database connection. Creates a table Returns an array of Phalcon\Db\Column objects describing a table Lists table references 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",
]
);
public function modifyColumn( string $tableName, string $schemaName, ColumnInterface $column, ColumnInterface $currentColumn = null ): bool;
Db\Adapter\Pdo\Sqlite¶
-
Namespace
Phalcon\Db\Adapter\Pdo
-
Uses
Phalcon\Db\Adapter\Pdo\AbstractPdoPhalcon\Db\ColumnPhalcon\Db\ColumnInterfacePhalcon\Db\EnumPhalcon\Db\ExceptionPhalcon\Db\IndexPhalcon\Db\IndexInterfacePhalcon\Db\RawValuePhalcon\Db\ReferencePhalcon\Db\ReferenceInterface
-
Extends
PdoAdapter -
Implements
Specific functions for the SQLite database system
Properties¶
/**
* @var string
*/
protected $dialectType = sqlite;
/**
* @var string
*/
protected $type = sqlite;
Methods¶
Constructor for Phalcon\Db\Adapter\Pdo\Sqlite This method is automatically called in Phalcon\Db\Adapter\Pdo constructor. Call it when you need to restore a database connection. Returns an array of Phalcon\Db\Column objects describing a table Lists table indexes Lists table references 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",
]
);
@deprecated Will re removed in the next version
Check whether the database system requires an explicit value for identity columns Returns PDO adapter DSN defaults as a key-value map.Db\Adapter\PdoFactory¶
-
Namespace
Phalcon\Db\Adapter
-
Uses
Phalcon\Factory\AbstractFactoryPhalcon\Support\Helper\Arr\Get
-
Extends
AbstractFactory -
Implements
This file is part of the Phalcon Framework.
(c) Phalcon Team team@phalcon.io
For the full copyright and license information, please view the LICENSE.txt file that was distributed with this source code.
Methods¶
Constructor Factory to create an instance from a Config object Create a new instance of the adapter Returns the available adaptersDb\Check¶
-
Namespace
Phalcon\Db
-
Uses
-
Extends
-
Implements
CheckInterface
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);
Properties¶
/**
* The boolean SQL predicate this constraint enforces.
*
* @var string
*/
protected $expression;
/**
* The CHECK constraint name. An empty string indicates an unnamed
* constraint — the dialect will emit the clause without a `CONSTRAINT`
* prefix in that case.
*
* @var string
*/
protected $name;
Methods¶
Phalcon\Db\Check constructor Returns the CHECK expression Returns the constraint name (may be an empty string for unnamed)Db\CheckInterface
¶
-
Namespace
Phalcon\Db
-
Uses
Phalcon\Contracts\Db\Check
-
Extends
CheckContract -
Implements
Phalcon\Db\CheckInterface
@psalm-suppress DeprecatedInterface @deprecated Will be removed in a future major release. Use {@see \Phalcon\Contracts\Db\Check} instead.
Db\Column¶
-
Namespace
Phalcon\Db
-
Uses
-
Extends
-
Implements
ColumnInterface
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);
Constants¶
const BIND_PARAM_BLOB = 3;
const BIND_PARAM_BOOL = 5;
const BIND_PARAM_DECIMAL = 32;
const BIND_PARAM_INT = 1;
const BIND_PARAM_NULL = 0;
const BIND_PARAM_STR = 2;
const BIND_SKIP = 1024;
const TYPE_BIGINTEGER = 14;
const TYPE_BINARY = 27;
const TYPE_BIT = 19;
const TYPE_BLOB = 11;
const TYPE_BOOLEAN = 8;
const TYPE_BYTEA = 30;
const TYPE_CHAR = 5;
const TYPE_CIDR = 32;
const TYPE_DATE = 1;
const TYPE_DATERANGE = 39;
const TYPE_DATETIME = 4;
const TYPE_DECIMAL = 3;
const TYPE_DOUBLE = 9;
const TYPE_ENUM = 18;
const TYPE_FLOAT = 7;
const TYPE_GEOMETRY = 40;
const TYPE_GEOMETRYCOLLECTION = 47;
const TYPE_INET = 31;
const TYPE_INT4RANGE = 34;
const TYPE_INT8RANGE = 35;
const TYPE_INTEGER = 0;
const TYPE_JSON = 15;
const TYPE_JSONB = 16;
const TYPE_LINESTRING = 42;
const TYPE_LONGBLOB = 13;
const TYPE_LONGTEXT = 24;
const TYPE_MACADDR = 33;
const TYPE_MEDIUMBLOB = 12;
const TYPE_MEDIUMINTEGER = 21;
const TYPE_MEDIUMTEXT = 23;
const TYPE_MULTILINESTRING = 45;
const TYPE_MULTIPOINT = 44;
const TYPE_MULTIPOLYGON = 46;
const TYPE_NUMRANGE = 36;
const TYPE_POINT = 41;
const TYPE_POLYGON = 43;
const TYPE_SMALLINTEGER = 22;
const TYPE_TEXT = 6;
const TYPE_TIME = 20;
const TYPE_TIMESTAMP = 17;
const TYPE_TINYBLOB = 10;
const TYPE_TINYINTEGER = 26;
const TYPE_TINYTEXT = 25;
const TYPE_TSRANGE = 37;
const TYPE_TSTZRANGE = 38;
const TYPE_UUID = 29;
const TYPE_VARBINARY = 28;
const TYPE_VARCHAR = 2;
Properties¶
/**
* Column Position
*
* @var string|null
*/
protected $after;
/**
* 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.
*
* @var bool
*/
protected $isArray = false;
/**
* Column is autoIncrement?
*
* @var bool
*/
protected $autoIncrement = false;
/**
* Bind Type
*
* @var int
*/
protected $bindType = 2;
/**
* Column's comment
*
* @var string|null
*/
protected $comment;
/**
* Default column value
*
* @var mixed|null
*/
protected $defaultValue;
/**
* Position is first
*
* @var bool
*/
protected $first = false;
/**
* Generation expression for `GENERATED ALWAYS AS (...)`. Null when the
* column is not a generated/computed column.
*
* @var string|null
*/
protected $generated;
/**
* 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.
*
* @var bool
*/
protected $generationStored = false;
/**
* The column have some numeric type?
*
* @var bool
*/
protected $isNumeric = false;
/**
* Whether the column is `INVISIBLE` (MySQL 8.0.23+). Invisible columns
* are excluded from `SELECT *` expansion but can still be referenced
* explicitly.
*
* @var bool
*/
protected $invisible = false;
/**
* Column's name
*
* @var string
*/
protected $name;
/**
* Column not nullable?
*
* Default SQL definition is NOT NULL.
*
* @var bool
*/
protected $notNull = true;
/**
* Column is part of the primary key?
*
* @var bool
*/
protected $primary = false;
/**
* Integer column number scale
*
* @var int
*/
protected $scale = ;
/**
* Integer column size
*
* @var int|string
*/
protected $size = ;
/**
* Column data type
*
* @var int
*/
protected $type;
/**
* Column data type reference
*
* @var int
*/
protected $typeReference = -1;
/**
* Column data type values
*
* @var array|string
*/
protected $typeValues;
/**
* Integer column unsigned?
*
* @var bool
*/
protected $unsigned = false;
Methods¶
Phalcon\Db\Column constructor Check whether field absolute to position in table Returns the type of bind handling Column's comment Default column value Returns the generation expression for a generated/computed column. Returnsnull when the column is not generated. Column's name Integer column number scale Integer column size Column data type Column data type reference Column data type values Check whether column has default value 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. Auto-Increment Check whether column have first position in table Whether the column is a generated/computed column. Whether a generated column is STORED. false means VIRTUAL. Always meaningful only when isGenerated() is true. 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. Not null Check whether column have an numeric type Column is part of the primary key? Returns true if number column is unsigned Db\ColumnInterface
¶
-
Namespace
Phalcon\Db
-
Uses
Phalcon\Contracts\Db\Column
-
Extends
ColumnContract -
Implements
Phalcon\Db\ColumnInterface
@psalm-suppress DeprecatedInterface @deprecated Will be removed in a future major release. Use {@see \Phalcon\Contracts\Db\Column} instead.
Db\Dialect
¶
-
Namespace
Phalcon\Db
-
Uses
Phalcon\Support\Settings
-
Extends
-
Implements
DialectInterface
This is the base class to each database dialect. This implements common methods to transform intermediate code into its RDBMS related syntax
Properties¶
Methods¶
public function createMaterializedView( string $viewName, array $definition, string $schemaName = null ): string;
CREATE MATERIALIZED VIEW name AS <sql>). Other dialects inherit this throw — MySQL and SQLite have no materialized-view concept. Generate SQL to create a new savepoint public function dropMaterializedView( string $viewName, string $schemaName = null, bool $ifExists = bool ): string;
modifier appends a row-lock disposition keyword. $sql = $dialect->forUpdate("SELECTFROM robots");
echo $sql; // SELECTFROM robots FOR UPDATE
$sql = $dialect->forUpdate(
"SELECTFROM robots",
Dialect::LOCK_NOWAIT
);
echo $sql; // SELECTFROM robots FOR UPDATE NOWAIT
$sql = $dialect->forUpdate(
"SELECTFROM robots",
Dialect::LOCK_SKIP_LOCKED
);
echo $sql; // SELECTFROM robots FOR UPDATE SKIP LOCKED
final public function getColumnList( array $columnList, string $escapeChar = null, array $bindCounts = [] ): string;
final public function getSqlColumn( mixed $column, string $escapeChar = null, array $bindCounts = [] ): string;
public function getSqlExpression( array $expression, string $escapeChar = null, array $bindCounts = [] ): string;
// SELECTFROM robots LIMIT 10
echo $dialect->limit(
"SELECTFROM robots",
10
);
// SELECTFROM robots LIMIT 10 OFFSET 50
echo $dialect->limit(
"SELECTFROM robots",
[10, 50]
);
public function onConflictUpdate( string $sqlQuery, array $conflictColumns, array $updateColumns ): string;
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). public function refreshMaterializedView( string $viewName, string $schemaName = null, bool $concurrent = bool ): string;
concurrent = true for REFRESH MATERIALIZED VIEW CONCURRENTLY ..., which avoids blocking concurrent SELECTs (requires the view to have a unique index). Registers custom SQL functions Generate SQL to release a savepoint 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. Generate SQL to rollback a savepoint Builds a SELECT statement Checks whether the platform supports releasing savepoints. Checks whether the platform supports savepoints Checks the column type and if not string it returns the type reference Checks the column type and returns the updated SQL statement 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. Returns the size of the column enclosed in parentheses Returns the column size and scale enclosed in parentheses 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. protected function getIndexColumnList( IndexInterface $index, bool $wrapExpressions = bool ): string;
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. final protected function getSqlExpressionAll( array $expression, string $escapeChar = null ): string;
final protected function getSqlExpressionBinaryOperations( array $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionCase( array $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionCastValue( array $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionConvertValue( array $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionFrom( mixed $expression, string $escapeChar = null ): string;
final protected function getSqlExpressionFunctionCall( array $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionGroupBy( mixed $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionHaving( array $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionJoins( mixed $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionLimit( mixed $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionList( array $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionObject( array $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionOrderBy( mixed $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionQualified( array $expression, string $escapeChar = null ): string;
final protected function getSqlExpressionScalar( array $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionUnaryOperations( array $expression, string $escapeChar = null, array $bindCounts = [] ): string;
final protected function getSqlExpressionWhere( mixed $expression, string $escapeChar = null, array $bindCounts = [] ): string;
protected function prepareColumnAlias( string $qualified, string $alias = null, string $escapeChar = null ): string;
protected function prepareQualified( string $column, string $domain = null, string $escapeChar = null ): string;
protected function prepareTable( string $table, string $schema = null, string $alias = null, string $escapeChar = null ): string;
Db\Dialect\Mysql¶
-
Namespace
Phalcon\Db\Dialect
-
Uses
Phalcon\Db\CheckInterfacePhalcon\Db\ColumnPhalcon\Db\ColumnInterfacePhalcon\Db\DialectPhalcon\Db\DialectInterfacePhalcon\Db\ExceptionPhalcon\Db\IndexInterfacePhalcon\Db\RawValuePhalcon\Db\ReferenceInterface
-
Extends
Dialect -
Implements
Generates database specific SQL for the MySQL RDBMS
Properties¶
Methods¶
Generates SQL to add a CHECK constraint to an existing table. Enforced by MySQL 8.0.16+.public function addColumn( string $tableName, string $schemaName, ColumnInterface $column ): string;
public function addForeignKey( string $tableName, string $schemaName, ReferenceInterface $reference ): string;
public function addPrimaryKey( string $tableName, string $schemaName, IndexInterface $index ): string;
public function createView( string $viewName, array $definition, string $schemaName = null ): string;
public function dropForeignKey( string $tableName, string $schemaName, string $referenceName ): string;
public function dropTable( string $tableName, string $schemaName = null, bool $ifExists = bool ): string;
public function dropView( string $viewName, string $schemaName = null, bool $ifExists = bool ): string;
public function modifyColumn( string $tableName, string $schemaName, ColumnInterface $column, ColumnInterface $currentColumn = null ): string;
public function onConflictUpdate( string $sqlQuery, array $conflictColumns, array $updateColumns ): string;
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. 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("SELECTFROM robots");
echo $sql; // SELECTFROM robots LOCK IN SHARE MODE
Db\Dialect\Postgresql¶
-
Namespace
Phalcon\Db\Dialect
-
Uses
Phalcon\Db\CheckInterfacePhalcon\Db\ColumnPhalcon\Db\ColumnInterfacePhalcon\Db\DialectPhalcon\Db\DialectInterfacePhalcon\Db\ExceptionPhalcon\Db\IndexInterfacePhalcon\Db\RawValuePhalcon\Db\ReferenceInterface
-
Extends
Dialect -
Implements
Generates database specific SQL for the PostgreSQL RDBMS
Properties¶
Methods¶
Generates SQL to add a CHECK constraint to an existing table.public function addColumn( string $tableName, string $schemaName, ColumnInterface $column ): string;
public function addForeignKey( string $tableName, string $schemaName, ReferenceInterface $reference ): string;
public function addPrimaryKey( string $tableName, string $schemaName, IndexInterface $index ): string;
public function createMaterializedView( string $viewName, array $definition, string $schemaName = null ): string;
public function createView( string $viewName, array $definition, string $schemaName = null ): string;
public function dropForeignKey( string $tableName, string $schemaName, string $referenceName ): string;
public function dropMaterializedView( string $viewName, string $schemaName = null, bool $ifExists = bool ): string;
public function dropTable( string $tableName, string $schemaName = null, bool $ifExists = bool ): string;
public function dropView( string $viewName, string $schemaName = null, bool $ifExists = bool ): string;
public function modifyColumn( string $tableName, string $schemaName, ColumnInterface $column, ColumnInterface $currentColumn = null ): string;
public function refreshMaterializedView( string $viewName, string $schemaName = null, bool $concurrent = bool ): string;
concurrent is true, emits REFRESH MATERIALIZED VIEW CONCURRENTLY ... (avoids blocking concurrent SELECTs; requires a unique index on the view). Appends a RETURNING clause to the supplied INSERT/UPDATE/DELETE statement. Pass ["*"] for RETURNING, or a list of column names. 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("SELECTFROM robots");
// SELECTFROM robots FOR SHARE
echo $dialect->sharedLock(
"SELECTFROM robots",
Dialect::LOCK_NOWAIT
);
// SELECTFROM robots FOR SHARE NOWAIT
Db\Dialect\Sqlite¶
-
Namespace
Phalcon\Db\Dialect
-
Uses
Phalcon\Db\CheckInterfacePhalcon\Db\ColumnPhalcon\Db\ColumnInterfacePhalcon\Db\DialectPhalcon\Db\DialectInterfacePhalcon\Db\ExceptionPhalcon\Db\IndexInterfacePhalcon\Db\RawValuePhalcon\Db\ReferenceInterface
-
Extends
Dialect -
Implements
Generates database specific SQL for the SQLite RDBMS
Properties¶
Methods¶
SQLite cannot ALTER an existing table to add a CHECK constraint; the constraint must be declared at CREATE TABLE time.public function addColumn( string $tableName, string $schemaName, ColumnInterface $column ): string;
public function addForeignKey( string $tableName, string $schemaName, ReferenceInterface $reference ): string;
public function addPrimaryKey( string $tableName, string $schemaName, IndexInterface $index ): string;
public function createView( string $viewName, array $definition, string $schemaName = null ): string;
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.
public function dropForeignKey( string $tableName, string $schemaName, string $referenceName ): string;
public function dropTable( string $tableName, string $schemaName = null, bool $ifExists = bool ): string;
public function dropView( string $viewName, string $schemaName = null, bool $ifExists = bool ): string;
modifier argument (NOWAIT / SKIP LOCKED are silently ignored). Gets the column name in SQLite public function listIndexesSql( string $table, string $schema = null, string $keyName = null ): string;
public function modifyColumn( string $tableName, string $schemaName, ColumnInterface $column, ColumnInterface $currentColumn = null ): string;
RETURNING clause to the supplied INSERT/UPDATE/DELETE statement. Supported by SQLite 3.35+. Pass ["*"] for RETURNING, or a list of column names. SQLite has no row-level shared-lock construct, so the original query is returned unchanged regardless of the modifier argument. Generates SQL checking for the existence of a schema.table Generates the SQL to describe the table creation options Generates SQL to truncate a table Generates SQL checking for the existence of a schema.view Db\DialectInterface
¶
-
Namespace
Phalcon\Db
-
Uses
Phalcon\Contracts\Db\Dialect
-
Extends
DialectContract -
Implements
Phalcon\Db\DialectInterface
@psalm-suppress DeprecatedInterface @deprecated Will be removed in a future major release. Use {@see \Phalcon\Contracts\Db\Dialect} instead.
Db\Enum¶
-
Namespace
Phalcon\Db
-
Uses
-
Extends
-
Implements
Constants for Phalcon\Db
Constants¶
const FETCH_ASSOC;
const FETCH_BOTH;
const FETCH_BOUND;
const FETCH_CLASS;
const FETCH_CLASSTYPE;
const FETCH_COLUMN;
const FETCH_DEFAULT;
const FETCH_FUNC;
const FETCH_GROUP;
const FETCH_INTO;
const FETCH_KEY_PAIR;
const FETCH_LAZY;
const FETCH_NAMED;
const FETCH_NUM;
const FETCH_OBJ;
const FETCH_ORI_NEXT;
const FETCH_PROPS_LATE;
const FETCH_SERIALIZE;
const FETCH_UNIQUE;
Db\Exception¶
-
Namespace
Phalcon\Db
-
Uses
-
Extends
\Exception -
Implements
Exceptions thrown in Phalcon\Db will use this class
Db\Index¶
-
Namespace
Phalcon\Db
-
Uses
-
Extends
-
Implements
IndexInterface
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);
Properties¶
/**
* Index columns
*
* @var array
*/
protected $columns;
/**
* 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.
*
* @var bool
*/
protected $concurrent = false;
/**
* 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.
*
* @var array
*/
protected $directions;
/**
* 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.
*
* @var bool
*/
protected $invisible = false;
/**
* Index name
*
* @var string
*/
protected $name;
/**
* Index type
*
* @var string
*/
protected $type = ;
/**
* 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.
*
* @var string
*/
protected $where = ;
Methods¶
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.
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. Index name Index type 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). Whether the index is built CONCURRENTLY (PostgreSQL only). MySQL and SQLite have no equivalent and ignore the flag. 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
¶
-
Namespace
Phalcon\Db
-
Uses
Phalcon\Contracts\Db\Index
-
Extends
IndexContract -
Implements
Phalcon\Db\IndexInterface
@psalm-suppress DeprecatedInterface @deprecated Will be removed in a future major release. Use {@see \Phalcon\Contracts\Db\Index} instead.
Db\Profiler¶
-
Namespace
Phalcon\Db
-
Uses
Phalcon\Db\Profiler\Item
-
Extends
-
Implements
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";
Properties¶
/**
* Active Item
*
* @var Item
*/
protected $activeProfile;
/**
* All the Items in the active profile
*
* @var Item[]
*/
protected $allProfiles;
/**
* Total time spent by all profiles to complete in nanoseconds
*
* @var float
*/
protected $totalNanoseconds = ;
Methods¶
Returns the last profile executed in the profiler Returns the total number of SQL statements processed Returns all the processed profiles Returns the total time in milliseconds spent by the profiles Returns the total time in nanoseconds spent by the profiles Returns the total time in seconds spent by the profiles Resets the profiler, cleaning up all the profilespublic function startProfile( string $sqlStatement, array $sqlVariables = [], array $sqlBindTypes = [] ): Profiler;
Db\Profiler\Item¶
-
Namespace
Phalcon\Db\Profiler
-
Uses
-
Extends
-
Implements
This class identifies each profile in a Phalcon\Db\Profiler
Properties¶
/**
* Timestamp when the profile ended
*
* @var double
*/
protected $finalTime;
/**
* Timestamp when the profile started
*
* @var double
*/
protected $initialTime;
/**
* SQL bind types related to the profile
*
* @var array
*/
protected $sqlBindTypes;
/**
* SQL statement related to the profile
*
* @var string
*/
protected $sqlStatement;
/**
* SQL variables related to the profile
*
* @var array
*/
protected $sqlVariables;
Methods¶
Return the timestamp when the profile ended Return the timestamp when the profile started Return the SQL bind types related to the profile Return the SQL statement related to the profile Return the SQL variables related to the profile Returns the total time in milliseconds spent by the profile Returns the total time in nanoseconds spent by the profile Returns the total time in seconds spent by the profile Return the timestamp when the profile ended Return the timestamp when the profile started Return the SQL bind types related to the profile Return the SQL statement related to the profile Return the SQL variables related to the profileDb\RawValue¶
-
Namespace
Phalcon\Db
-
Uses
-
Extends
-
Implements
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();
Properties¶
Methods¶
Phalcon\Db\RawValue constructorDb\Reference¶
-
Namespace
Phalcon\Db
-
Uses
-
Extends
-
Implements
ReferenceInterface
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",
],
]
);
Properties¶
/**
* Local reference columns
*
* @var array
*/
protected $columns;
/**
* Constraint name
*
* @var string
*/
protected $name;
/**
* Referenced Columns
*
* @var array
*/
protected $referencedColumns;
/**
* Referenced Schema
*
* @var string
*/
protected $referencedSchema;
/**
* Referenced Table
*
* @var string
*/
protected $referencedTable;
/**
* Schema name
*
* @var string
*/
protected $schemaName;
/**
* ON DELETE
*
* @var string
*/
protected $onDelete;
/**
* ON UPDATE
*
* @var string
*/
protected $onUpdate;
Methods¶
Phalcon\Db\Reference constructor Local reference columns Constraint name ON DELETE ON UPDATE Referenced Columns Referenced Schema Referenced Table Schema nameDb\ReferenceInterface
¶
-
Namespace
Phalcon\Db
-
Uses
Phalcon\Contracts\Db\Reference
-
Extends
ReferenceContract -
Implements
Phalcon\Db\ReferenceInterface
@psalm-suppress DeprecatedInterface @deprecated Will be removed in a future major release. Use {@see \Phalcon\Contracts\Db\Reference} instead.
Db\Result\PdoResult¶
-
Namespace
Phalcon\Db\Result
-
Uses
Phalcon\Db\Adapter\AdapterInterfacePhalcon\Db\EnumPhalcon\Db\ResultInterface
-
Extends
-
Implements
ResultInterface
Encapsulates the resultset internals
$result = $connection->query("SELECTFROM robots ORDER BY name");
$result->setFetchMode(
\Phalcon\Db\Enum::FETCH_NUM
);
while ($robot = $result->fetchArray()) {
print_r($robot);
}
Properties¶
/**
* @var array
*/
protected $bindParams;
/**
* @var array
*/
protected $bindTypes;
/**
* @var AdapterInterface
*/
protected $connection;
/**
* Active fetch mode
*
* @var int
*/
protected $fetchMode;
/**
* Internal resultset
*
* @var \PDOStatement
*/
protected $pdoStatement;
/**
* @var mixed
* TODO: Check if this property is used
*/
protected $result;
/**
* @var int|null
*/
protected $rowCount;
/**
* @var string|null
*/
protected $sqlStatement;
Methods¶
public function __construct( AdapterInterface $connection, \PDOStatement $result, mixed $sqlStatement = null, mixed $bindParams = null, mixed $bindTypes = null );
$result = $connection->query(
"SELECTFROM robots ORDER BY name"
);
// Move to third row on result
$result->dataSeek(2);
// Fetch third row
$row = $result->fetch();
public function fetch( int $fetchStyle = null, int $cursorOrientation = static-constant-access, int $cursorOffset = int );
Phalcon\Db\Result\Pdo::setFetchMode() $result = $connection->query("SELECTFROM robots ORDER BY name");
$result->setFetchMode(
\Phalcon\Enum::FETCH_OBJ
);
while ($robot = $result->fetch()) {
echo $robot->name;
}
public function fetchAll( int $mode = static-constant-access, mixed $fetchArgument = static-constant-access, mixed $constructorArgs = null ): array;
Phalcon\Db\Result\Pdo::setFetchMode() 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("SELECTFROM robots ORDER BY name");
$result->setFetchMode(
\Phalcon\Enum::FETCH_NUM
);
while ($robot = result->fetchArray()) {
print_r($robot);
}
$result = $connection->query(
"SELECTFROM robots ORDER BY name"
);
echo "There are ", $result->numRows(), " rows in the resultset";
public function setFetchMode( int $fetchMode, mixed $colNoOrClassNameOrObject = null, mixed $ctorargs = null ): bool;
// 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
);
Db\ResultInterface
¶
-
Namespace
Phalcon\Db
-
Uses
Phalcon\Contracts\Db\Result
-
Extends
ResultContract -
Implements
Phalcon\Db\ResultInterface
@psalm-suppress DeprecatedInterface @deprecated Will be removed in a future major release. Use {@see \Phalcon\Contracts\Db\Result} instead.