TP6.0 一对多模型关联 hasMany
2023-03-07 09:41:48 时间
本文测试关联方法都采用预载入查询
Article::with('comments')->select();
1. 创建数据表
-- 文章表
CREATE TABLE `article` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`content` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `article` VALUES (1, 'PHP数据类型', '文章内容01');
INSERT INTO `article` VALUES (2, 'Java常量池', '文章内容02');
INSERT INTO `article` VALUES (3, 'Vue Cli 4 引入图片地址', '文章内容03');
-- 文章评论表
CREATE TABLE `comments` (
`id` int(255) NOT NULL AUTO_INCREMENT COMMENT '评论ID',
`article_id` int(11) DEFAULT NULL COMMENT '文章ID',
`content` varchar(500) DEFAULT NULL COMMENT '评论内容',
`create_time` int(11) DEFAULT NULL COMMENT '评论时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `comments` VALUES (1, 1, '作者文采太好了', 1597560224);
INSERT INTO `comments` VALUES (2, 1, '说的太对了', 1597560224);
INSERT INTO `comments` VALUES (3, 2, '这篇文章真不错,值得收藏', 1597560224);
2. 文章模型定义一对多关联方法
public function comments()
{
/**
* hasMany('关联模型', '关联模型外键','当前模型主键');
* Comments 评论模型
* article_id 评论表的外键字段,关联模型外键
* id 文章表主键字段,当前模型主键
*/
return $this->hasMany(Comments::class, 'article_id', 'id');
}
3. hasMany() 支持的额外方法
- 不支持
bind()
绑定关联属性到模型,因为结果是二维数组,所以不支持 - 支持
hidden()
隐藏指定的关联属性
public function comments()
{
return $this->hasMany(Comments::class, 'article_id', 'id')
->hidden(['create_time', 'content']);
}
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的