KurikoKudo / MySolutions

0 stars 0 forks source link

gorm memo #4

Open KurikoKudo opened 6 years ago

KurikoKudo commented 6 years ago

http://doc.gorm.io/ 英語で読むのが面倒なのでメモ書き

KurikoKudo commented 6 years ago

DB接続

 MySQLのみ.


 import (
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)

func gormConnect() *gorm.DB {
    DBMS := "mysql"
    USER := "mysolutions" //ユーザ名
    PASS := "MySystem2017!" //パスワード
    PROTOCOL := "tcp(localhost:3306)" //接続プロトコル
    DBNAME := "mysolutions" //DB名

    CONNECT := USER + ":" + PASS + "@" + PROTOCOL + "/" + DBNAME + "?charset=utf8&parseTime=True&loc=Local" //上記情報をまとめてStringに.
    db, err := gorm.Open(DBMS, CONNECT) //上記情報を代入(ここに直接打ち込んでもよい)

    if err != nil {
        panic(err.Error())
    }
    return db
}

Migration

create table する前に、modelの書き方 jsonは使うかなと思って適当につけたのであとで調整する


import (
    _ "github.com/jinzhu/gorm/dialects/mysql"
)

type Page_Display struct { //not DB
    Page_Body     Page_Body
    Tag           []Tag
    Page_Relation []Page_Relation
}

type Page_Body struct {
    Page_Id    uint   `json:page_id gorm:"primary_key"`   // int/uint型はprimary_keyにすると自動でAUTO_INCREMENTになるよ
    Page_Title string `json:page_title gorm:"not null"`
    Page_Body  string `json:page_body gorm:"not null"`
    Evaluation uint   `json:evalution gorm:"not null"`
    Condition  bool   `json:condition gorm:"not null"`
}

type Tag struct {
    Page_Id  uint   `json:page_id gorm:"not null"`
    Tag_Name string `json:tag_name gorm:"not null"`
}

type Page_Relation struct {
    Page_id0 uint `json:page_id gorm:"not null"`
    Page_id1 uint `json:page_id gorm:"not null"`
}

type Summary_Body struct {
    Summary_Id    uint `json:summary_id gorm:"primary_key"`
    Summary_Title uint `json:summary_title gorm:"not null"`
    Page_Total    uint `json:page_total gorm:"not null"`
}

type Summary_Page struct {
    Summary_Id  uint `json:summary_id gorm:"not null"`
    Page_Id     uint `json:page_id gorm:"not null"`
    Page_Number uint `json:page_number gorm:"not null"`
}

create table の関数

func Migration() {
    db := gormConnect()

    db.CreateTable(&models.Page_Body{})
    db.CreateTable(&models.Tag{})
    db.CreateTable(&models.Page_Relation{})
    db.CreateTable(&models.Summary_Body{})
    db.CreateTable(&models.Summary_Page{})

}

mysqlにcreateしたtableを消してやり直したい時は上記CreateをDropにすれば消してくれる