В последнее время я пытаюсь создать простой веб-сайт с Beego
фреймворком.Все хорошо, я пытаюсь создать модель.
У меня есть два стола users
и user_types
.Таблица users
имеет поле user_type
ссылка на pk
таблицы user_types
.
Вот мое определение кода:
type User struct {
Id uint `orm:"pk"`
FullName string
UserName string `orm:"unique"`
Phone string `orm:"unique"`
Email string `orm:"unique"`
Password string
UserType *UserType `orm:"rel(fk)"`
CreatedAt time.Time `orm:"auto_now_add;type(datetime)"`
UpdatedAt time.Time `orm:"auto_now;type(datetime)"`
}
type UserType struct {
Id uint `orm:"pk"`
TypeName string
CountUser uint `orm:"default(0)"`
Users []*User `orm:"reverse(many)"`
}
Но когда я использую orm.RunSyncdb("default", true, true)
, это толькосоздать таблицу и индексирование, а не создать внешний ключ.
Это sql
запуск миграции кода.
drop table `user_type`
DROP TABLE IF EXISTS `user_type`
drop table `user`
DROP TABLE IF EXISTS `user`
create table `user_type`
-- --------------------------------------------------
-- Table Structure for `models.UserType`
-- --------------------------------------------------
CREATE TABLE IF NOT EXISTS `user_type` (
`id` integer unsigned NOT NULL PRIMARY KEY,
`type_name` varchar(255) NOT NULL DEFAULT '' ,
`count_user` integer unsigned NOT NULL DEFAULT 0
) ENGINE=INNODB;
create table `user`
-- --------------------------------------------------
-- Table Structure for `models.User`
-- --------------------------------------------------
CREATE TABLE IF NOT EXISTS `user` (
`id` integer unsigned NOT NULL PRIMARY KEY,
`full_name` varchar(255) NOT NULL DEFAULT '' ,
`user_name` varchar(255) NOT NULL DEFAULT '' UNIQUE,
`phone` varchar(255) NOT NULL DEFAULT '' UNIQUE,
`email` varchar(255) NOT NULL DEFAULT '' UNIQUE,
`password` varchar(255) NOT NULL DEFAULT '' ,
`user_type_id` integer unsigned NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL
) ENGINE=INNODB;
CREATE INDEX `user_user_name_email` ON `user` (`user_name`, `email`);
А вот диаграммы: диаграммы
У меня вопрос, как создать внешний ключ при запуске RunSyncdb
.
Спасибо всем!