Recently i trying create simple web site with Beego
framework. Everything is oke util i trying to create model.
I have two table users
and user_types
. Table users
have field user_type
link to pk
of table user_types
.
Here is my code definition:
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)"`
}
But when i use orm.RunSyncdb("default", true, true)
it only create table and indexing, not create foreign key.
This is sql
code migrate run.
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`);
And here is diagrams: diagrams
My question is how to create foreign key when run RunSyncdb
.
Thanks every one!
是的,不会在数据库生成外键,只是逻辑上的外键,全都依赖于模型定义的时候的关系,这个有点接受不了,或者我理解的不够深的原因