179 lines
4.6 KiB
Lua
179 lines
4.6 KiB
Lua
local result = require("mysql.result")
|
|
|
|
local mysql_builder_select = {}
|
|
mysql_builder_select.__index = mysql_builder_select
|
|
|
|
--[[
|
|
创建一个新的 fw_mysql_builder_select 对象
|
|
@return 返回一个新的 fw_mysql_builder_select 对象
|
|
]]
|
|
function mysql_builder_select.new(__module)
|
|
local instance = setmetatable({}, mysql_builder_select)
|
|
instance.module = __module
|
|
return instance
|
|
end
|
|
|
|
--[[
|
|
添加 int32 类型的条件
|
|
@param name 字段名称
|
|
@param expression 条件表达式
|
|
@param value 值
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:where_i32(name, expression, value)
|
|
self.module:where_i32(name, expression, fw_toint(value))
|
|
return self
|
|
end
|
|
|
|
--[[
|
|
添加 int64 类型的条件
|
|
@param name 字段名称
|
|
@param expression 条件表达式
|
|
@param value 值
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:where_i64(name, expression, value)
|
|
self.module:where_i64(name, expression, fw_toint(value))
|
|
return self
|
|
end
|
|
|
|
--[[
|
|
添加 double 类型的条件
|
|
@param name 字段名称
|
|
@param expression 条件表达式
|
|
@param value 值
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:where_dob(name, expression, value)
|
|
self.module:where_dob(name, expression, value)
|
|
return self
|
|
end
|
|
|
|
--[[
|
|
添加字符串类型的条件
|
|
@param name 字段名称
|
|
@param expression 条件表达式
|
|
@param value 值
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:where_str(name, expression, value)
|
|
self.module:where_str(name, expression, value)
|
|
return self
|
|
end
|
|
|
|
--[[
|
|
添加自定义表达式的条件
|
|
@param expression 条件表达式
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:where_expression(expression)
|
|
self.module:where_expression(expression)
|
|
return self
|
|
end
|
|
|
|
--[[
|
|
添加 LIKE 条件
|
|
@param name 字段名称
|
|
@param value 值
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:where_like(name, value)
|
|
self.module:where_like(name, value)
|
|
return self
|
|
end
|
|
|
|
--[[
|
|
设置查询的表名
|
|
@param table_name 表名
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:table(table_name)
|
|
self.module:table(table_name)
|
|
return self
|
|
end
|
|
|
|
--[[
|
|
设置查询的字段
|
|
@param table 字段表
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:field(table)
|
|
self.module:field(table)
|
|
return self
|
|
end
|
|
|
|
--[[
|
|
设置分页参数
|
|
@param page 页码
|
|
@param count 每页记录数
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:page(page, count)
|
|
self.module:page(fw_toint(page), fw_toint(count))
|
|
return self
|
|
end
|
|
|
|
--[[
|
|
设置查询限制
|
|
@param start 起始位置
|
|
@param count 记录数
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:limit(start, count)
|
|
self.module:limit(fw_toint(start), fw_toint(count))
|
|
return self
|
|
end
|
|
|
|
--[[
|
|
设置排序
|
|
@param orderby 排序语句
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:orderby(orderby)
|
|
self.module:orderby(orderby)
|
|
return self
|
|
end
|
|
--[[
|
|
设置分组
|
|
@param groupby 排序语句
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:groupby(expd)
|
|
self.module:groupby(expd)
|
|
return self
|
|
end
|
|
--[[
|
|
设置分组结果
|
|
@param having 排序语句
|
|
@return 返回 mysql_builder_select 对象自身,以便链式调用
|
|
]]
|
|
function mysql_builder_select:having(expd)
|
|
self.module:having(expd)
|
|
return self
|
|
end
|
|
|
|
--[[
|
|
清空查询条件
|
|
]]
|
|
function mysql_builder_select:clear()
|
|
self.module:clear()
|
|
end
|
|
|
|
--[[
|
|
执行查询
|
|
@return 返回 mysql_result 对象
|
|
]]
|
|
function mysql_builder_select:query()
|
|
return result.new(self.module:query())
|
|
end
|
|
|
|
--[[
|
|
获取查询结果的记录数
|
|
@return 返回记录数
|
|
]]
|
|
function mysql_builder_select:count()
|
|
return self.module:count()
|
|
end
|
|
|
|
return mysql_builder_select
|