用途:面向 Drupal 开发,指导通过数据库抽象层执行数据库查询,覆盖 Select、Insert、Update、Delete 等操作,核心原则是绝不拼接 SQL 字符串,避免 SQL 注入。
主要能力:参数化查询(如 query("SELECT nid, title FROM {node} WHERE type = :type", [':type' => $type]));Select 查询支持 fields、condition、orderBy、range,以及 fetchAll、fetchAllAssoc、countQuery 取单值;联表查询使用 join;Insert 使用 insert()->fields()->execute();Upsert 使用 upsert()->key()->fields()->values();Update 使用 update()->fields()->condition();Delete 使用 delete()->condition();事务通过 startTransaction() 配合 try/catch 与 rollBack(),事务在变量离开作用域时提交。
使用方式:通过依赖注入获取数据库服务,构造函数注入 Drupal\Core\Database\Connection,服务 ID 为 database。对实体查询优先使用 EntityQuery,例如 entityTypeManager->getStorage('node')->getQuery() 配合 accessCheck(TRUE)、condition、sort、range。
适用场景:需要在 Drupal 模块中读写自定义表或节点数据、执行带条件的查询与联表、批量写入或更新、以及需要事务保证一致性的场景。
限制:资料未提供版本兼容范围、性能基准或额外配置说明;示例中的表名、字段名需按实际项目替换。