Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away