LoginSignup
2
0

More than 5 years have passed since last update.

【自分用】Goメモ GORMを使ってビューにDBからカラムを表示

Last updated at Posted at 2019-01-02

GoでGorm使ってDBからカラムの中身を出力したい

メモ用

ORMはGorm、ルーティングはGinを使用

main.go
import(
  "fmt"
  //data内に構造体を設定
  "./data"
  "github.com/gin-gonic/gin"
  "github.com/jinzhu/gorm"
  _"github.com/go-sql-driver/mysql"
)

func get_messages() []data.Message {
  //mysqlに対してアクセス
  db, err := gorm.Open("mysql", "root@/chatapp?charset=utf8&parseTime=True&loc=Local")
  //エラー処理
  if err != nil {
    fmt.Println(err)
  }
  defer db.Close()
  var messages []data.Message
  //FindメソッドでDBの中身を取得
  db.Find(&messages)
  return messages
}

func main() {
  //ginの記述はここから
  r := gin.Default()
  //templatesフォルダ配下のファイルを読む
  r.LoadHTMLGlob("templates/*")

  r.GET("/", func(c *gin.Context) {
  messages = get_messages()
  c.HTML(200, "index.html", gin.H{
    //上記のmessagesをindex.html内で使用できるように設定
    "messages": messages,
    })
  })
}

ビューファイル内では下記の記述でDBの内容を繰り返して表示させることができる。
※一部抜粋

index.html

{{ range .messages }}
<div class="news-feed">
  <div class="news-feed-name">
    <p>{{.Name}}</p>
  </div>
  <div class="news-feed-text">
    <p>{{.Text}}</p>
  </div>
</div>
{{ end }}

{{ range .messages }} このmessagesがmain.goから渡したもの。
{{ end }} ここまで繰り返しが行われる。
{{ .Name }} nameカラムの中身が表示される。
{{ .Text }} textカラムの中身が表示される。
range から end まで囲まれた部分が要素の数だけ繰り返して表示がされる。

Rubyをやったことがある人でいう、each文のイメージ。

以下の記事を参考にさせていただきました。ありがとうございます。

https://qiita.com/Anharu/items/ce644c521a4d52fafb7e
↑すごく、わかりやすいです。
http://doc.gorm.io/crud.html#query
https://godoc.org/github.com/gin-gonic/gin

フレームワークやライブラリの中を読むみたいなのもやりたいなぁ

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0