我可以使用 Fluent (Vapor) 直接使用 SQL 来获取 table 中的行数吗?
Can I use straight SQL to get the number of rows in a table using Fluent (Vapor)?
我想这样做 SELECT COUNT(column_name) FROM table_name;
以取回 Int 并 return 将其作为响应的一部分。我不想为了得到计数而将每个对象都加载到内存中;像这样: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
}
我想这样做 SELECT COUNT(column_name) FROM table_name;
以取回 Int 并 return 将其作为响应的一部分。我不想为了得到计数而将每个对象都加载到内存中;像这样: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
}