swift - 我可以使用直接 SQL 来使用 Fluent (Vapor) 获取表中的行数吗?

标签 swift postgresql fluent vapor

我想执行此 SELECT COUNT(column_name) FROM table_name; 以取回 Int 并将其作为响应的一部分返回。我不想为了得到计数而将每个对象都加载到内存中;像这样:User.query().all().count

请告诉我这可以用 Fluent 实现! :)

最佳答案

raw 方法是可能的。这里有 MySQL 的示例

guard let mysql = drop.database?.driver as? MySQLDriver else {
    return
}

let count = try mysql.raw("SELECT COUNT(column_name) FROM table_name")

此外,每个驱动程序都必须实现raw方法

public protocol Driver {
    var idKey: String { get }
    func query<T: Entity>(_ query: Query<T>) throws -> Node
    func schema(_ schema: Schema) throws
    func raw(_ raw: String, _ values: [Node]) throws -> Node
}

关于swift - 我可以使用直接 SQL 来使用 Fluent (Vapor) 获取表中的行数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40826991/

相关文章:

arrays - 数组扩展,其中 Element 是 Optional 并且返回类型是 Wrapped

sql - Postgres 如何避免在 select 语句中重复 if then

postgresql - 查询执行器 - 上一步的开始与下一步的结束不重叠

c# - Entity Framework Core Fluent Modelbuilder 键和属性

c# - Fluent LINQ - 选择包含子列表的父列表,其中子子集存在

Java11 嵌套类,同时对代码使用 Fluent Design Structure

ios - 为什么在属性中包装 ReactiveSwift MutableProperty 会导致泄漏?

arrays - didSet 没有在每次突变时都被调用吗?

python - 矩阵乘法 Python 与 Swift 中的不同输出

node.js - SailsJS/Waterline 无法在 Postgres 中创建模型