ChangeItem

每个对象表示一个查询,即 DDL SQL 查询中的一行。

抽象

此类用于检查站点的数据库以查看是否已运行 DDL 查询。如果未运行,它提供通过重新运行 DDL 查询来修复数据库的功能。这些查询从 administrator/components/com_admin/sql/updates/<database> 文件夹中的更新文件中解析。如果站点使用 com_installer 更新,则会自动运行这些更新。但是,程序文件可能会在不更新数据库的情况下更新(例如,如果用户只是将新文件复制到现有安装的顶部)。

这是一个抽象类。我们需要为每个数据库扩展它并添加一个 buildCheckQuery() 方法,该方法创建查询以检查是否已运行 DDL 查询。

2.5

Joomla CMS

方法

__construct

构造函数:从 $updateQuery 构建检查查询和消息

__construct(\Joomla\Database\DatabaseDriver db,  file,  query) : 

2.5

参数

db

DatabaseDriver数据库连接器对象

file

stringSQL 文件的完整路径名称

query

stringSQL 查询的文本(文件的一行)

响应

混合

buildCheckQuery

检查 DDL 查询以查看它是否为已知类型 如果是,则构建一个检查查询以查看 DDL 是否已在数据库上运行。

buildCheckQuery() : 
抽象

如果成功,则填充 $msgElements、$queryType、$checkStatus 和 $checkQuery 字段。$msgElements 包含创建用户消息的文本。$checkQuery 包含用于检查架构更改是否已针对当前数据库运行的 SQL 查询。$queryType 包含已运行的 DDL 查询的类型(例如,CREATE_TABLE、ADD_COLUMN、CHANGE_COLUMN_TYPE、ADD_INDEX)。如果创建了查询,则 $checkStatus 字段设置为零

如果失败,则 $checkQuery 为空,并且 $checkStatus 为 -1。例如,如果当前行是非 DDL 语句,则会发生这种情况。

2.5

响应

无效

check

运行检查查询并检查是否返回 1 行

check() : 

2.5

响应

int如果成功则为 1,如果跳过则为 -1,如果检查失败则为 -2

fix

运行更新查询以将更改应用于数据库

fix() : 

2.5

响应

无效

getInstance

返回对 ChangeItem 对象的引用。

getInstance(\Joomla\Database\DatabaseDriver db,  file,  query) : \Joomla\CMS\Schema\ChangeItem
静态

2.5

抛出

RuntimeException如果找不到数据库驱动程序的类

参数

db

DatabaseDriver数据库连接器对象

file

stringSQL 文件的完整路径名称

query

stringSQL 查询的文本(文件的一行)

响应

ChangeItem基于数据库驱动的实例

属性

file

更新文件:找到查询的完整路径文件名

2.5

类型

字符串

updateQuery

更新查询:用于更改数据库架构的查询(文件中的某一行)

2.5

类型

字符串

checkQuery

检查查询:用于检查数据库架构的查询

2.5

类型

字符串

checkQueryExpected

检查查询结果:如果数据库是最新的,则检查查询的预期结果

2.5

类型

字符串

db

DatabaseDriver 对象

2.5

类型

DatabaseDriver

queryType

查询类型:用于构建语言键以创建消息,以告知用户检查/更改了什么可能的值:ADD_TABLE、ADD_COLUMN、CHANGE_COLUMN_TYPE、ADD_INDEX

2.5

类型

字符串

msgElements

包含用于 Text::sprintf 语句的值的数组,指示已检查的内容

根据定义的元素,告诉您消息应该是什么,如下所示:对于 ADD_TABLE:表 对于 ADD_COLUMN:表、列 对于 CHANGE_COLUMN_TYPE:表、列、类型 对于 ADD_INDEX:表、索引

2.5

类型

array<string|int, mixed>

checkStatus

已检查状态

2.5

类型

int

rerunStatus

重新运行状态

2.5

类型

int