W3cubDocs

/CakePHP 4.4

Class SqliteSchemaDialect

Schema management/reflection features for Sqlite

Property Summary

  • $_constraintsIdMap protected
    array<string, mixed>

    Array containing the foreign keys constraints names Necessary for composite foreign keys to be handled

  • $_driver protected
    Cake\Database\DriverInterface

    The driver instance being used.

  • $_hasSequences protected
    bool

    Whether there is any table in this connection to SQLite containing sequences.

Method Summary

Method Detail

__construct() public

__construct(Cake\Database\DriverInterface $driver)

Constructor

This constructor will connect the driver so that methods like columnSql() and others will fail when the driver has not been connected.

Parameters

Cake\Database\DriverInterface $driver

The driver to use.

_applyTypeSpecificColumnConversion() protected

_applyTypeSpecificColumnConversion(string $columnType, array $definition): array|null

Tries to use a matching database type to convert a SQL column definition to an abstract type definition.

Parameters

string $columnType

The column type.

array $definition

The column definition.

Returns

array|null

_convertColumn() protected

_convertColumn(string $column): array<string, mixed>

Convert a column definition to the abstract types.

The returned type will be a type that Cake\Database\TypeFactory can handle.

Parameters

string $column

The column type + length

Returns

array<string, mixed>

Throws

Cake\Database\Exception\DatabaseException
when unable to parse column type

_convertConstraintColumns() protected

_convertConstraintColumns(array<string>|string $references): string

Convert foreign key constraints references to a valid stringified list

Parameters

array<string>|string $references

The referenced columns of a foreign key constraint statement

Returns

string

_convertOnClause() protected

_convertOnClause(string $clause): string

Convert string on clauses to the abstract ones.

Parameters

string $clause

The on clause to convert.

Returns

string

_defaultValue() protected

_defaultValue(string|int|null $default): string|int|null

Manipulate the default value.

Sqlite includes quotes and bared NULLs in default values. We need to remove those.

Parameters

string|int|null $default

The default value.

Returns

string|int|null

_foreignOnClause() protected

_foreignOnClause(string $on): string

Generate an ON clause for a foreign key.

Parameters

string $on

The on clause

Returns

string

_getTypeSpecificColumnSql() protected

_getTypeSpecificColumnSql(string $columnType, Cake\Database\Schema\TableSchemaInterface $schema, string $column): string|null

Tries to use a matching database type to generate the SQL fragment for a single column in a table.

Parameters

string $columnType

The column type.

Cake\Database\Schema\TableSchemaInterface $schema

The table schema instance the column is in.

string $column

The name of the column.

Returns

string|null

addConstraintSql() public

addConstraintSql(Cake\Database\Schema\TableSchema $schema): array

Generate the SQL queries needed to add foreign key constraints to the table

SQLite can not properly handle adding a constraint to an existing table. This method is no-op

Parameters

Cake\Database\Schema\TableSchema $schema

The table instance the foreign key constraints are.

Returns

array

columnSql() public

columnSql(Cake\Database\Schema\TableSchema $schema, string $name): string

Generate the SQL fragment for a single column in a table.

Parameters

Cake\Database\Schema\TableSchema $schema

The table instance the column is in.

string $name

The name of the column.

Returns

string

Throws

Cake\Database\Exception\DatabaseException
when the column type is unknown

constraintSql() public

constraintSql(Cake\Database\Schema\TableSchema $schema, string $name): string

Generate the SQL fragments for defining table constraints.

Note integer primary keys will return ''. This is intentional as Sqlite requires that integer primary keys be defined in the column definition.

Parameters

Cake\Database\Schema\TableSchema $schema

The table instance the column is in.

string $name

The name of the column.

Returns

string

convertColumnDescription() public

convertColumnDescription(Cake\Database\Schema\TableSchema $schema, array $row): void

Convert field description results into abstract schema fields.

Parameters

Cake\Database\Schema\TableSchema $schema
array $row

Returns

void

convertForeignKeyDescription() public

convertForeignKeyDescription(Cake\Database\Schema\TableSchema $schema, array $row): void

Convert a foreign key description into constraints on the Table object.

Parameters

Cake\Database\Schema\TableSchema $schema
array $row

Returns

void

convertIndexDescription() public

convertIndexDescription(Cake\Database\Schema\TableSchema $schema, array $row): void

Convert an index description results into abstract schema indexes or constraints.

Since SQLite does not have a way to get metadata about all indexes at once, additional queries are done here. Sqlite constraint names are not stable, and the names for constraints will not match those used to create the table. This is a limitation in Sqlite's metadata features.

Parameters

Cake\Database\Schema\TableSchema $schema

The table object to append an index or constraint to.

array $row

The row data from describeIndexSql.

Returns

void

convertOptionsDescription() public

convertOptionsDescription(Cake\Database\Schema\TableSchema $schema, array $row): void

Convert options data into table options.

Parameters

Cake\Database\Schema\TableSchema $schema

Table instance.

array $row

The row of data.

Returns

void

createTableSql() public

createTableSql(Cake\Database\Schema\TableSchema $schema, array<string> $columns, array<string> $constraints, array<string> $indexes): array<string>

Generate the SQL to create a table.

Parameters

Cake\Database\Schema\TableSchema $schema
array<string> $columns
array<string> $constraints
array<string> $indexes

Returns

array<string>

describeColumnSql() public

describeColumnSql(string $tableName, array<string, mixed> $config): array

Generate the SQL to describe a table.

Parameters

string $tableName
array<string, mixed> $config

Returns

array

describeForeignKeySql() public

describeForeignKeySql(string $tableName, array<string, mixed> $config): array

Generate the SQL to describe the foreign keys in a table.

Parameters

string $tableName
array<string, mixed> $config

Returns

array

describeIndexSql() public

describeIndexSql(string $tableName, array<string, mixed> $config): array

Generate the SQL to describe the indexes in a table.

Parameters

string $tableName
array<string, mixed> $config

Returns

array

describeOptionsSql() public

describeOptionsSql(string $tableName, array<string, mixed> $config): array

Generate the SQL to describe table options

Parameters

string $tableName

Table name.

array<string, mixed> $config

The connection configuration.

Returns

array

dropConstraintSql() public

dropConstraintSql(Cake\Database\Schema\TableSchema $schema): array

Generate the SQL queries needed to drop foreign key constraints from the table

SQLite can not properly handle dropping a constraint to an existing table. This method is no-op

Parameters

Cake\Database\Schema\TableSchema $schema

The table instance the foreign key constraints are.

Returns

array

dropTableSql() public

dropTableSql(Cake\Database\Schema\TableSchema $schema): array

Generate the SQL to drop a table.

Parameters

Cake\Database\Schema\TableSchema $schema

Schema instance

Returns

array

hasSequences() public

hasSequences(): bool

Returns whether there is any table in this connection to SQLite containing sequences

Returns

bool

indexSql() public

indexSql(Cake\Database\Schema\TableSchema $schema, string $name): string

Generate the SQL fragment for a single index in a table.

Parameters

Cake\Database\Schema\TableSchema $schema
string $name

Returns

string

listTablesSql() public

listTablesSql(array<string, mixed> $config): array

Generate the SQL to list the tables and views.

Parameters

array<string, mixed> $config

The connection configuration to use for getting tables from.

Returns

array

listTablesWithoutViewsSql() public

listTablesWithoutViewsSql(array<string, mixed> $config): array<mixed>

Generate the SQL to list the tables, excluding all views.

Parameters

array<string, mixed> $config

The connection configuration to use for getting tables from.

Returns

array<mixed>

truncateTableSql() public

truncateTableSql(Cake\Database\Schema\TableSchema $schema): array

Generate the SQL to truncate a table.

Parameters

Cake\Database\Schema\TableSchema $schema

Returns

array

Property Detail

$_constraintsIdMap protected

Array containing the foreign keys constraints names Necessary for composite foreign keys to be handled

Type

array<string, mixed>

$_driver protected

The driver instance being used.

Type

Cake\Database\DriverInterface

$_hasSequences protected

Whether there is any table in this connection to SQLite containing sequences.

Type

bool

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.4/class-Cake.Database.Schema.SqliteSchemaDialect.html