TP6.0 一对一模型关联 hasOne
2024-09-02
55
本文测试关联方法都采用预载入查询
$data = User::with('profile')->select();
halt($data->toArray());
1. 创建数据表
-- 用户表
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id',
`username` varchar(255) NOT NULL COMMENT '用户名',
`password` char(32) DEFAULT NULL COMMENT '登陆密码',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='用户表';
INSERT INTO `user` VALUES (1, 'liang', 'e10adc3949ba59abbe56e057f20f883e');
INSERT INTO `user` VALUES (2, 'zhangsan', 'e10adc3949ba59abbe56e057f20f883e');
INSERT INTO `user` VALUES (3, 'laowang', 'e10adc3949ba59abbe56e057f20f883e');
INSERT INTO `user` VALUES (4, 'wangwu', 'e10adc3949ba59abbe56e057f20f883e');
INSERT INTO `user` VALUES (5, 'xiaosun', 'e10adc3949ba59abbe56e057f20f883e');
-- 用户资料表
DROP TABLE IF EXISTS `profile`;
CREATE TABLE `profile` (
`user_id` int(11) DEFAULT NULL COMMENT '用户id',
`age` tinyint(4) DEFAULT NULL COMMENT '年龄',
`mobile` bigint(20) DEFAULT NULL COMMENT '手机号',
`gender` char(1) DEFAULT NULL COMMENT '性别'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户资料表';
INSERT INTO `profile` VALUES (1, 20, 12305, '男');
INSERT INTO `profile` VALUES (2, 30, 10086, '女');
INSERT INTO `profile` VALUES (5, 40, 10010, '男');
2. 用户模型定义一对一关联方法
public function profile()
{
// hasOne('关联模型类名', '外键', '主键');
// 用户资料表的外键字段 user_id, 默认为当前模型名 + _id
// 用户表的主键字段 id, 默认为当前模型主键 $pk 属性的值
return $this->hasOne(Profile::class, 'user_id', 'id');
}
3. 一对一关联支持额外的方法
一、bind():绑定关联表的属性到父模型属性
public function profile()
{
return $this->hasOne(Profile::class, 'user_id', 'id')
// bind(['字段', '别名' => '字段'])
->bind(['age', 'new_mobile' => 'mobile']);
}
二、其他方法
更新于:2个月前public function profile()
{
return $this->hasOne(Profile::class, 'user_id', 'id')
// 追加获取器
->append(['checked'])
// 隐藏关联表的属性
->hidden(['age']);
}
赞一波!
相关文章
- 【说站】java并发模型中的两种锁
- 【说站】java内存模型的组成
- 【说站】Java内存模型的并发处理
- java 安全沙箱模型详解
- TP6.0 模型获取器
- TP6.0 模型的关联删除
- TP6.0 模型JSON字段的使用 【系统配置表 key-value】
- TP6.0 一对一模型关联 belongsTo 相对关联(反向关联)
- TP6模型类在PhpStorm中没有方法提示
- ThinkPHP6.0 模型搜索器的使用
- TP6.0 模型搜索器
- 如何在 Django 中创建抽象模型类?
- 区块链模型解析:公有链、私有链与联盟链全面解读
- 订单履约系统的概念模型
- 使用Java编写一个简易的区块链概念模型代码
- 在Windows PC本地搭建类似ChatGPT的AI模型和交互式UI图文教程
- 特征工程:从数据到模型的桥梁——提升机器学习模型性能的关键步骤
- 谷歌推出交互生成式Genie模型可以创造2D交互游戏画面
- 大分类显示自定义模型字段的方法
- 为不同的模型栏目指定不同的样式
文章评论
评论问答