最近,我尝试使用Beego
框架创建简单的网站。一切都可以尝试创建模型。
我有两个表users
和user_types
。表users
的字段user_type
链接到表pk
的{{1}}。
这是我的代码定义:
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
这是图表: diagrams
我的问题是在运行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`);
时如何创建外键。
谢谢大家!