TP6.0 一对一模型关联 hasOne
2023-03-07 09:41:52 时间
本文测试关联方法都采用预载入查询
$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']);
}
二、其他方法
public function profile()
{
return $this->hasOne(Profile::class, 'user_id', 'id')
// 追加获取器
->append(['checked'])
// 隐藏关联表的属性
->hidden(['age']);
}
相关文章
- 腾讯云与虚拟平台Metalife合作打造拟真化元宇宙虚拟形象
- 腾讯O264RT,适配最广的端上自研软件编码器
- 李子柒重回大众视野,拿回商标
- DNSPod十问高晓波:城中村需要怎样的智慧物联网?
- React语境下前端DDD的长年探索经验
- 你的2022年度开发者关键词,请查收>>
- 7天DAU超亿级,《羊了个羊》技术架构升级实战
- GME SDK 2.9.6,3D语音功能优化/伴奏功能优化/WebGL适配/Electron适配优化
- 快抢!兔年限定红包封面来啦~
- ESXi/vCenter部署Gentoo Linux - OpenRC/SystemD
- OpenCloudOS 如何利用 nettrace 进行网络故障诊断
- Lighthouse与清华学子共探云上游戏开发
- R语言分布滞后非线性模型(DLNM)研究发病率,死亡率和空气污染示例|附代码数据
- 决策树对消费者共享汽车使用情况调查数据可视化分析|附代码数据
- R语言股市可视化相关矩阵:最小生成树|附代码数据
- 极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析|附代码数据
- 企点营销官网更新,揭秘2023新增长法则
- crontab——Linux定时任务那些事儿
- 低代码平台的优缺点
- Linux编译安装Python3.9——以CentOS7为例