数据库
数据库模块公开 API 以与 SQL 数据库交互。你可以按如下方式导入模块:
import Database from '@ioc:Adonis/Lucid/Database'
方法 / 属性#
以下是数据库模块上可用的方法 / 属性列表。
connection#
返回给定连接的查询客户端。当未定义显式连接名称时,使用默认连接。
Database.connection()
// 命名连接
Database.connection('pg')
你还可以获取特定模式的查询客户端实例。
Database.connection('pg', { mode: 'write' })
// 读模式下不允许写查询
Database.connection('pg', { mode: 'read' })
beginGlobalTransaction#
开始全球事务。 开始全局事务后的所有查询都将在事务内执行。
我们建议仅在测试期间使用此方法。
await Database.beginGlobalTransaction()
// 对于命名连接
await Database.beginGlobalTransaction('pg')
commitGlobalTransaction#
提交之前创建的全局事务
await Database.commitGlobalTransaction()
await Database.commitGlobalTransaction('pg')
rollbackGlobalTransaction#
回滚之前创建的全局事务
await Database.rollbackGlobalTransaction()
await Database.rollbackGlobalTransaction('pg')
report#
返回所有已注册连接的健康检查报告。
const report = await Database.report()
console.log(report.name)
console.log(report.health.healthy)
query#
client.query 方法的别名。
Database.query()
insertQuery#
client.insertQuery 方法的别名。
Database.insertQuery()
modelQuery#
client.modelQuery 方法的别名。
import User from 'App/Models/User'
const query = Database.modelQuery(User)
rawQuery#
client.rawQuery 方法的别名。
await Database
.rawQuery('select * from users where id = ?', [1])
knexQuery#
client.knexQuery 方法的别名。
Database.knexQuery()
knexRawQuery#
client.knexRawQuery 方法的别名。
Database
.knexRawQuery('select * from users where id = ?', [1])
ref#
ref
方法允许你引用数据库列名作为值。 例如:
Database
.from('users')
.where('users.id', '=', Database.ref('user_logins.user_id'))
raw#
raw
方法创建 RawBuilder 的实例。 此查询旨在用作另一个查询中的参考。
rawQuery
和 raw
有什么区别?#
你可以执行使用 rawQuery
方法创建的查询。 然而,使用 raw
方法创建的查询只能作为引用传递。
Database
.from('users')
.select('*')
.select(
Database
.raw('select "ip_address" from "user_logins" where "users.id" = "user_logins.user_id" limit 1')
.wrap('(', ')')
)
from#
获取主连接的 查询构建器 实例的快捷方法。
Database.from('users')
// 等同于
Database.connection().from('users')
table#
获取主连接的 插入查询构建器 实例的快捷方法。
Database.table('users')
// 等同于
Database.connection().table('users')
transaction#
client.transaction 方法的别名。
await Database.transaction()
prettyPrint#
一种辅助方法,可以漂亮地打印作为 db:query
事件发出的查询日志。
import Event from '@ioc:Adonis/Core/Event'
Event.on('db:query', Database.prettyPrint)
hasHealthChecksEnabled#
一个布尔值,用于了解是否为至少一个连接启用了健康检查。
console.log(Database.hasHealthChecksEnabled)
primaryConnectionName#
返回在 config/database
文件中定义的默认 / 主连接名称。
console.log(Database.primaryConnectionName)
manager#
返回对 连接管理器 的引用
console.log(Database.manager)
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。