Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
二次元的罪恶王冠
beego
提交
19d82ab6
B
beego
项目概览
二次元的罪恶王冠
/
beego
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
beego
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
19d82ab6
编写于
7月 22, 2015
作者:
P
Pelle Johnsen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #1274: Add QuerySeter.Distinct()
上级
9775e3e3
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
28 addition
and
16 deletion
+28
-16
orm/db.go
orm/db.go
+5
-1
orm/orm_queryset.go
orm/orm_queryset.go
+22
-15
orm/types.go
orm/types.go
+1
-0
未找到文件。
orm/db.go
浏览文件 @
19d82ab6
...
...
@@ -814,7 +814,11 @@ func (d *dbBase) ReadBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condi
}
}
query
:=
fmt
.
Sprintf
(
"SELECT %s FROM %s%s%s T0 %s%s%s%s"
,
sels
,
Q
,
mi
.
table
,
Q
,
join
,
where
,
orderBy
,
limit
)
sqlSelect
:=
"SELECT"
if
qs
.
distinct
{
sqlSelect
+=
" DISTINCT"
}
query
:=
fmt
.
Sprintf
(
"%s %s FROM %s%s%s T0 %s%s%s%s"
,
sqlSelect
,
sels
,
Q
,
mi
.
table
,
Q
,
join
,
where
,
orderBy
,
limit
)
d
.
ins
.
ReplaceMarks
(
&
query
)
...
...
orm/orm_queryset.go
浏览文件 @
19d82ab6
...
...
@@ -61,6 +61,7 @@ type querySet struct {
limit
int64
offset
int64
orders
[]
string
distinct
bool
orm
*
orm
}
...
...
@@ -112,24 +113,30 @@ func (o querySet) OrderBy(exprs ...string) QuerySeter {
return
&
o
}
// add DISTINCT to SELECT
func
(
o
querySet
)
Distinct
()
QuerySeter
{
o
.
distinct
=
true
return
&
o
}
// set relation model to query together.
// it will query relation models and assign to parent model.
func
(
o
querySet
)
RelatedSel
(
params
...
interface
{})
QuerySeter
{
if
len
(
params
)
==
0
{
o
.
relDepth
=
DefaultRelsDepth
}
else
{
for
_
,
p
:=
range
params
{
switch
val
:=
p
.
(
type
)
{
case
string
:
o
.
related
=
append
(
o
.
related
,
val
)
case
int
:
o
.
relDepth
=
val
default
:
panic
(
fmt
.
Errorf
(
"<QuerySeter.RelatedSel> wrong param kind: %v"
,
val
))
}
}
}
return
&
o
if
len
(
params
)
==
0
{
o
.
relDepth
=
DefaultRelsDepth
}
else
{
for
_
,
p
:=
range
params
{
switch
val
:=
p
.
(
type
)
{
case
string
:
o
.
related
=
append
(
o
.
related
,
val
)
case
int
:
o
.
relDepth
=
val
default
:
panic
(
fmt
.
Errorf
(
"<QuerySeter.RelatedSel> wrong param kind: %v"
,
val
))
}
}
}
return
&
o
}
// set condition to QuerySeter.
...
...
orm/types.go
浏览文件 @
19d82ab6
...
...
@@ -67,6 +67,7 @@ type QuerySeter interface {
Limit
(
interface
{},
...
interface
{})
QuerySeter
Offset
(
interface
{})
QuerySeter
OrderBy
(
...
string
)
QuerySeter
Distinct
()
QuerySeter
RelatedSel
(
...
interface
{})
QuerySeter
Count
()
(
int64
,
error
)
Exist
()
bool
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录