Как вставить/сосчитать значения БД через gorm на golang?

Начал использовать gorm+postresSQL - выполняю тупо по инструкции, но выдаёт ошибки

type MyList struct {
   Id uint64
   Name  string   
   IsTrue bool
}

подключил

"github.com/jinzhu/gorm"
_ "github.com/lib/pq"


db, err := gorm.Open("postgres", "user=Roman password=Roman dbname=DB1  sslmode=disable")  
   if err != nil {
       log.Fatalf("error: %v\n", err)
   }
   db.DB()


   todo := MyList{Id:8888, Name: "Новое имя", IsTrue:false}

   var me MyList
     db.Where("Name = ?", "Новое имя").First(&me)
     fmt.Println(me)

   db.Create(&todo)

   db.NewRecord(todo)

-----он выругался

[35m(pq: отношение "my_lists" не существует)[0m [33m[2016-02-01 18:58:50][0m [31;1m [0m

[35m(pq: отношение "my_lists" не существует)[0m [33m[2016-02-01 18:58:50][0m [31;1m [0m

И кто-то знает, как получить айди вставленной строки через gorm? или мне сразу айдишник хранить в переменной +1 и вставлять эту переменную? (обычно как бы так узнавал "INSERT INTO test(value) VALUES($1) RETURNING id") , но в gorm-е пока не оч разбираюсь.
  • Вопрос задан
  • 562 просмотра
Пригласить эксперта
Ответы на вопрос 1
rkravchik
@rkravchik
System Solutions
Id вы же сами записываете, когда создаёте структуру модели:
todo := MyList{Id:8888, Name: "Новое имя", IsTrue:false}

Но лучше, конечно, придерживаться соглашений gorm:
  • Column name is the snake case of field's name
  • Use ID field as primary key

ID оставляете пустым и после Create в нём будет нужный номер.
Рекомендую также использовать стандартную основу:
Gorm provide a default model struct, you could embed it in your struct
type Model struct {
    ID        uint `gorm:"primary_key"`
    CreatedAt time.Time
    UpdatedAt time.Time
    DeletedAt *time.Time
}

type User struct {
    gorm.Model
    Name string
}


Что касается ошибок, проверьте наличие необходимых таблиц. Либо создайте их кодом выше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы