Jeedom Core

DB
in package

Database management class providing ORM-like functionality

Handles database connections, queries, and object persistence with transaction support

Tags
see
PDO

For underlying database connection

Table of Contents

Constants

FETCH_TYPE_ALL  = 1
FETCH_TYPE_ROW  = 0

Properties

$connection  : PDO|null
$fields  : array<string, array<string|int, string>>
$lastConnection  : int

Methods

__clone()  : void
Prevent cloning of class
beginTransaction()  : void
Start a database transaction
buildDefinitionField()  : string
Build SQL field definition
buildDefinitionIndex()  : string
Build SQL index definition
buildField()  : string
Build SQL fields list
CallStoredProc()  : null|object|array<string|int, object>|array<string, mixed>|array<string|int, array<string, mixed>>
Execute a stored procedure
checksum()  : string
Calculate table checksum
commit()  : void
Commit the current transaction
compareAndFix()  : bool
Compare and fix database structure
compareDatabase()  : array<string, array<string, array<string, mixed>>>
Compare database against reference structure
compareField()  : array<string, array<string, string>>
Compare field against reference structure
compareIndex()  : array<string, array<string, string>>
Compare index against reference structure
compareTable()  : array<string, array<string, array<string, mixed>>>
Compare table against reference structure
getConnection()  : PDO
Get database connection, initializing if needed
getLastInsertId()  : false|string
Get ID of last inserted row
getWithFilter()  : array<string|int, mixed>|null
Find entities matching filters
lock()  : bool
Lock entity for update
optimize()  : void
Optimize database tables
Prepare()  : null|object|array<string|int, object>|array<string, mixed>|array<string|int, array<string, mixed>>
Execute a prepared statement
prepareIndexCompare()  : array<string, array<string, mixed>>
Format index data for comparison
refresh()  : bool
Refresh entity from database
remove()  : bool
Remove entity from database
rollBack()  : void
Rollback the current transaction
save()  : bool
Save an entity in the database
buildQuery()  : array<string|int, array<string|int, scalar|null>>
Build SQL query parameters from entity
getField()  : scalar|null
Get entity field value
getFields()  : array<string|int, string>
Get class fields using reflection
getReflectionClass()  : ReflectionClass
Get reflected class for entity
getTableName()  : string
Get table name for entity
initConnection()  : void
Initialize database connection
setField()  : void
Set entity field value

Constants

FETCH_TYPE_ALL

public int FETCH_TYPE_ALL = 1

Return all rows from database

FETCH_TYPE_ROW

public int FETCH_TYPE_ROW = 0

Return a single row from database

Properties

$connection

private static PDO|null $connection = \null

Database connection instance

$fields

private static array<string, array<string|int, string>> $fields = array()

Cache of table fields

$lastConnection

private static int $lastConnection

Timestamp of last connection

Methods

__clone()

Prevent cloning of class

public __clone() : void

beginTransaction()

Start a database transaction

public static beginTransaction() : void

buildDefinitionField()

Build SQL field definition

public static buildDefinitionField(array<string, mixed> $_field) : string
Parameters
$_field : array<string, mixed>

Field structure

Return values
string

SQL definition

buildDefinitionIndex()

Build SQL index definition

public static buildDefinitionIndex(array<string, string> $_index, string $_table_name) : string
Parameters
$_index : array<string, string>

Index structure

$_table_name : string

Table name

Return values
string

SQL definition

buildField()

Build SQL fields list

public static buildField(string|object $_class[, string $_prefix = '' ]) : string
Parameters
$_class : string|object

Entity class

$_prefix : string = ''

Optional table alias

Return values
string

Fields list

CallStoredProc()

Execute a stored procedure

public static & CallStoredProc(string $_procName, array<string, int|string> $_params, int $_fetch_type[, string|null $_className = NULL ][, int|null $_fetch_opt = NULL ]) : null|object|array<string|int, object>|array<string, mixed>|array<string|int, array<string, mixed>>
Parameters
$_procName : string

Procedure name

$_params : array<string, int|string>

Parameters

$_fetch_type : int

FETCH_TYPE constant

$_className : string|null = NULL

Optional classname for object hydration

$_fetch_opt : int|null = NULL

Optional PDO fetch mode

Tags
throws
Exception

When stored procedure execution fails

Return values
null|object|array<string|int, object>|array<string, mixed>|array<string|int, array<string, mixed>>

checksum()

Calculate table checksum

public static checksum(string $_table) : string
Parameters
$_table : string

Table name

Tags
throws
Exception

When checksum fails

Return values
string

Checksum value

commit()

Commit the current transaction

public static commit() : void

compareAndFix()

Compare and fix database structure

public static compareAndFix(array<string, mixed> $_database[, string $_table = 'all' ][, bool $_verbose = false ][, int $_loop = 0 ]) : bool
Parameters
$_database : array<string, mixed>

Reference database structure

$_table : string = 'all'

Specific table or 'all'

$_verbose : bool = false

Enable detailed output

$_loop : int = 0

Current fix attempt

Tags
throws
Exception

When fixes fail

Return values
bool

Success status

compareDatabase()

Compare database against reference structure

public static compareDatabase(array<string, mixed> $_database) : array<string, array<string, array<string, mixed>>>
Parameters
$_database : array<string, mixed>

Reference database structure

Return values
array<string, array<string, array<string, mixed>>>

Comparison results

compareField()

Compare field against reference structure

public static compareField(array<string, mixed> $_ref_field, array<string, mixed> $_real_field, string $_table_name) : array<string, array<string, string>>
Parameters
$_ref_field : array<string, mixed>

Reference field structure

$_real_field : array<string, mixed>

Actual field structure

$_table_name : string

Table name

Return values
array<string, array<string, string>>

Comparison results

compareIndex()

Compare index against reference structure

public static compareIndex(array<string, mixed> $_ref_index, array<string, mixed> $_real_index, string $_table_name[, bool $_forceRebuild = false ]) : array<string, array<string, string>>
Parameters
$_ref_index : array<string, mixed>

Reference index structure

$_real_index : array<string, mixed>

Actual index structure

$_table_name : string

Table name

$_forceRebuild : bool = false

Force index rebuild

Return values
array<string, array<string, string>>

Comparison results

compareTable()

Compare table against reference structure

public static compareTable(array<string, mixed> $_table) : array<string, array<string, array<string, mixed>>>
Parameters
$_table : array<string, mixed>

Reference table structure

Tags
throws
Exception

When table analysis fails

Return values
array<string, array<string, array<string, mixed>>>

Comparison results

getConnection()

Get database connection, initializing if needed

public static getConnection() : PDO
Tags
throws
PDOException

When connection fails

Return values
PDO

getLastInsertId()

Get ID of last inserted row

public static getLastInsertId() : false|string
Return values
false|string

getWithFilter()

Find entities matching filters

public static getWithFilter(array<string, string> $_filters, object $_object) : array<string|int, mixed>|null
Parameters
$_filters : array<string, string>

Search criteria

$_object : object

Entity type to search

Return values
array<string|int, mixed>|null

Found entities

lock()

Lock entity for update

public static lock(object $object) : bool
Parameters
$object : object

Entity to lock

Return values
bool

Success status

optimize()

Optimize database tables

public static optimize() : void
Tags
throws
Exception

When optimization fails

Prepare()

Execute a prepared statement

public static & Prepare(string $_query, array<string, scalar|null> $_params[, int $_fetchType = self::FETCH_TYPE_ROW ][, int $_fetch_param = PDO::FETCH_ASSOC ][, string|null $_fetch_opt = NULL ]) : null|object|array<string|int, object>|array<string, mixed>|array<string|int, array<string, mixed>>
Parameters
$_query : string

SQL query

$_params : array<string, scalar|null>

Parameters

$_fetchType : int = self::FETCH_TYPE_ROW

FETCH_TYPE constant

$_fetch_param : int = PDO::FETCH_ASSOC

PDO fetch mode

$_fetch_opt : string|null = NULL

Optional classname for object hydration

Tags
throws
Exception

When query execution fails

Return values
null|object|array<string|int, object>|array<string, mixed>|array<string|int, array<string, mixed>>

prepareIndexCompare()

Format index data for comparison

public static prepareIndexCompare(array<string, array<string, mixed>> $indexes) : array<string, array<string, mixed>>
Parameters
$indexes : array<string, array<string, mixed>>

Raw index data

Return values
array<string, array<string, mixed>>

Formatted index data

refresh()

Refresh entity from database

public static refresh(object $object) : bool
Parameters
$object : object

Entity to refresh

Tags
throws
Exception

When ID is missing

throws
ReflectionException

When class reflection fails

Return values
bool

Success status

remove()

Remove entity from database

public static remove(object $object) : bool
Parameters
$object : object

Entity to remove

Return values
bool

Success status

rollBack()

Rollback the current transaction

public static rollBack() : void

save()

Save an entity in the database

public static save(object $object[, bool $_direct = false ][, bool $_replace = false ]) : bool
Parameters
$object : object

Entity to save

$_direct : bool = false

Skip pre/post hooks

$_replace : bool = false

Use REPLACE instead of INSERT/UPDATE

Return values
bool

Success status

buildQuery()

Build SQL query parameters from entity

private static buildQuery(object $object) : array<string|int, array<string|int, scalar|null>>
Parameters
$object : object

Source entity

Return values
array<string|int, array<string|int, scalar|null>>

getField()

Get entity field value

private static getField(object $object, string $field) : scalar|null
Parameters
$object : object

Source entity

$field : string

Field name

Tags
throws
RuntimeException

When getter not found

Return values
scalar|null

Field value

getFields()

Get class fields using reflection

private static getFields(string|object $object) : array<string|int, string>
Parameters
$object : string|object

Entity or class name

Tags
throws
RuntimeException

When no fields found

Return values
array<string|int, string>

getReflectionClass()

Get reflected class for entity

private static getReflectionClass(object $object) : ReflectionClass
Parameters
$object : object

Entity to reflect

Return values
ReflectionClass

getTableName()

Get table name for entity

private static getTableName(object $object) : string
Parameters
$object : object

Entity

Return values
string

Table name

initConnection()

Initialize database connection

private static initConnection() : void
Tags
throws
PDOException

When connection fails

setField()

Set entity field value

private static setField(object $object, string $field, mixed $value) : void
Parameters
$object : object

Entity to modify

$field : string

Field name

$value : mixed

Field value


        
On this page

Search results