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

时间:2016-11-27 08:14:56

标签: swift postgresql fluent vapor

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

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

1 个答案:

答案 0 :(得分:1)

可以使用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
}