Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
beego
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
beego
Commits
01aa1085
Commit
01aa1085
authored
Nov 19, 2015
by
gobenon
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1 from gobenon/gobenon-m2mpatch-1
Update orm_querym2m.go
parents
a89f14d8
ca37557a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
8 deletions
+22
-8
orm_querym2m.go
orm/orm_querym2m.go
+22
-8
No files found.
orm/orm_querym2m.go
View file @
01aa1085
...
@@ -44,7 +44,15 @@ func (o *queryM2M) Add(mds ...interface{}) (int64, error) {
...
@@ -44,7 +44,15 @@ func (o *queryM2M) Add(mds ...interface{}) (int64, error) {
dbase
:=
orm
.
alias
.
DbBaser
dbase
:=
orm
.
alias
.
DbBaser
var
models
[]
interface
{}
var
models
[]
interface
{}
last_md_col_name
:=
mi
.
fields
.
dbcols
[
len
(
mi
.
fields
.
dbcols
)
-
1
]
last_md
:=
mds
[
len
(
mds
)
-
1
]
var
v3
interface
{}
var
names
[]
string
var
values
[]
interface
{}
if
reflect
.
Indirect
(
reflect
.
ValueOf
(
last_md
))
.
Kind
()
!=
reflect
.
Struct
{
v3
=
(
last_md
)
mds
=
mds
[
:
len
(
mds
)
-
1
]
}
for
_
,
md
:=
range
mds
{
for
_
,
md
:=
range
mds
{
val
:=
reflect
.
ValueOf
(
md
)
val
:=
reflect
.
ValueOf
(
md
)
if
val
.
Kind
()
==
reflect
.
Slice
||
val
.
Kind
()
==
reflect
.
Array
{
if
val
.
Kind
()
==
reflect
.
Slice
||
val
.
Kind
()
==
reflect
.
Array
{
...
@@ -63,15 +71,18 @@ func (o *queryM2M) Add(mds ...interface{}) (int64, error) {
...
@@ -63,15 +71,18 @@ func (o *queryM2M) Add(mds ...interface{}) (int64, error) {
if
exist
==
false
{
if
exist
==
false
{
panic
(
ErrMissPK
)
panic
(
ErrMissPK
)
}
}
if
v3
!=
nil
{
names
=
[]
string
{
mfi
.
column
,
rfi
.
column
,
last_md_col_name
}
names
:=
[]
string
{
mfi
.
column
,
rfi
.
column
}
values
=
make
([]
interface
{},
0
,
len
(
models
)
*
3
)
}
else
{
values
:=
make
([]
interface
{},
0
,
len
(
models
)
*
2
)
names
=
[]
string
{
mfi
.
column
,
rfi
.
column
}
values
=
make
([]
interface
{},
0
,
len
(
models
)
*
2
)
}
for
_
,
md
:=
range
models
{
for
_
,
md
:=
range
models
{
ind
:=
reflect
.
Indirect
(
reflect
.
ValueOf
(
md
))
ind
:=
reflect
.
Indirect
(
reflect
.
ValueOf
(
md
))
var
v2
interface
{}
var
v2
interface
{}
if
ind
.
Kind
()
!=
reflect
.
Struct
{
if
ind
.
Kind
()
!=
reflect
.
Struct
{
v2
=
ind
.
Interface
()
v2
=
ind
.
Interface
()
...
@@ -81,14 +92,17 @@ func (o *queryM2M) Add(mds ...interface{}) (int64, error) {
...
@@ -81,14 +92,17 @@ func (o *queryM2M) Add(mds ...interface{}) (int64, error) {
panic
(
ErrMissPK
)
panic
(
ErrMissPK
)
}
}
}
}
if
v3
==
nil
{
values
=
append
(
values
,
v1
,
v2
)
values
=
append
(
values
,
v1
,
v2
)
}
else
{
values
=
append
(
values
,
v1
,
v2
,
v3
)
}
}
}
return
dbase
.
InsertValue
(
orm
.
db
,
mi
,
true
,
names
,
values
)
return
dbase
.
InsertValue
(
orm
.
db
,
mi
,
true
,
names
,
values
)
}
}
// remove models following the origin model relationship
// remove models following the origin model relationship
func
(
o
*
queryM2M
)
Remove
(
mds
...
interface
{})
(
int64
,
error
)
{
func
(
o
*
queryM2M
)
Remove
(
mds
...
interface
{})
(
int64
,
error
)
{
fi
:=
o
.
fi
fi
:=
o
.
fi
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment