いつもお世話になっています。
最近Go言語を勉強中なのですが、ひとつわからないことがあり、皆様のお力をお借りしたいと思い投稿しました。
例1:
go
1//dbのtable設定 2type Hoge struct { 3 gorm.Model 4 Name string `sql:"size:255" json:"name" validate:"max=255"` 5 Movies []Movie `gorm:"many2many:movie_tags;"` 6} 7//ある2つの配列 8array := []string{"bar", "foo"} 9ids := []unit{} 10//array配列の値がhogesテーブルにあるかwhereで検索 11for _, v := range array { 12 s := Hoge{} 13 db.Where("name = ?", v).Find(&s) 14 //hogesのidをidsに追加する 15 ids = append(ids, v.ID) 16}
結果
sql
1SELECT * FROM `hoges` WHERE `hoges`.deleted_at IS NULL AND ((name = 'bar')) 2SELECT * FROM `hoges` WHERE `hoges`.deleted_at IS NULL AND ((name = 'foo'))
idsの中身
[1,2]
例2:
go
1//dbのtable設定 2type Hoge struct { 3 gorm.Model 4 Name string `sql:"size:255" json:"name" validate:"max=255"` 5 Movies []Movie `gorm:"many2many:movie_tags;"` 6} 7//ある2つの配列 8array := []string{"bar", "foo"} 9ids := []unit{} 10s := Hoge{} 11//array配列の値がhogesテーブルにあるかwhereで検索 12for _, v := range array { 13 db.Where("name = ?", v).Find(&s) 14 //hogesのidをidsに追加する 15 ids = append(ids, v.ID) 16}
sql
1SELECT * FROM `hoges` WHERE `hoges`.deleted_at IS NULL AND `tags`.`id` = '1' AND ((name = 'bar')) 2SELECT * FROM `hoges` WHERE `hoges`.deleted_at IS NULL AND `tags`.`id` = '1' AND ((name = 'foo'))
idsの中身
[1,1]
このように変数s := Hoge{}
をforの中に書くか外に書くかでsql文が変わるのはなぜでしょうか?
どなたかご存知でしたらご教示ください。
初歩的な質問ですみませんが、よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。