Beego Framework не создает внешний ключ при миграции

Недавно я пытался создать простой веб-сайт с 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,

Спасибо всем!

0 ответов

Другие вопросы по тегам