Beego Framework не создает внешний ключ при миграции - PullRequest
0 голосов
/ 02 октября 2018

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

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

...