在MySQL中设置外键,通过Gii创建Model时将自动生成hasMany和hasOne [ 2.0 版本 ]
mxq_user表结构
CREATE TABLE `mxq_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '用户名',
`auth_key` varchar(32) COLLATE utf8_unicode_ci NOT NULL COMMENT '认证key',
`password_hash` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '密码',
`password_reset_token` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '密码重置令牌',
`mobile` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '手机',
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '电子邮件',
`status` smallint(6) NOT NULL DEFAULT '10' COMMENT '用户状态',
`created_at` int(11) NOT NULL COMMENT '创建时间',
`updated_at` int(11) NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='用户表';
mxq_user_token表结构
CREATE TABLE `mxq_user_token` (
`token_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '令牌编号',
`client_type` varchar(10) NOT NULL COMMENT '客户端类型 android wap',
`user_id` int(11) NOT NULL COMMENT '用户编号',
`username` varchar(50) NOT NULL COMMENT '用户名',
`access_token` varchar(50) NOT NULL COMMENT '登录令牌',
`access_expire` int(10) unsigned NOT NULL COMMENT '登录时间',
`login_time` int(11) DEFAULT NULL COMMENT '最后登陆时间',
`login_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '最后登陆ip',
PRIMARY KEY (`token_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `mxq_user_token_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `mxq_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=82 DEFAULT CHARSET=utf8 COMMENT='移动端登录令牌表';
CONSTRAINT
mxq_user_token_ibfk_1
FOREIGN KEY (user_id
) REFERENCESmxq_user
(id
) ON DELETE CASCADE ON UPDATE CASCADE`
此句就的作用就是当mxq_user中的记录删除时mxq_user_token表对应的关联记录也级联删除,更新时也更新
创建好外键后可以通过Gii工具生成Model
在User模型中自动生成如下代码
public function getUserTokens()
{
return $this->hasMany(UserToken::className(), ['user_id' => 'id']);
}
在UserToken模型中生成如下代码
public function getUser()
{
return $this->hasOne(User::className(), ['id' => 'user_id']);
}
hasMany
和hasOne
的用法请参考文档
qq3737002 河南郑州
注册时间:2015-03-29
最后登录:2022-07-04
在线时长:59小时26分
最后登录:2022-07-04
在线时长:59小时26分
- 粉丝31
- 金钱4498
- 威望170
- 积分6788
共 0 条评论