thinkphp6入门(14)-- 多关联模型查询

背景:

有3个数据表,一个User表,一个Cloth表,一个Shoe表。

Cloth表和Shoe表分别和User表通过user_id关联。

thinkphp 6中如何通过模型查询所有用户,其中包括每个用户的cloth和shoe。

多关联模型查询:

1. User模型 (app\model\User.php):

namespace app\model;use think\Model;class User extends Model
{// 设置表名(如果与默认的表名不同)protected $table = 'user';// 关联到Cloth模型public function cloths()
{return $this->hasMany('App\model\Cloth', 'user_id');}// 关联到Shoe模型public function shoes()
{return $this->hasMany('App\model\Shoe', 'user_id');}
}

2. Cloth模型 (app\model\Cloth.php):

namespace app\model;use think\Model;class Cloth extends Model
{// 设置表名(如果与默认的表名不同)protected $table = 'cloth';// 关联到User模型public function user()
{return $this->belongsTo('App\model\User', 'user_id');}
}

3. Shoe模型 (app\model\Shoe.php):

Cloth模型类似,确保Shoe模型也有与User的关联关系。

4. 查询所有用户及其关联的Cloth和Shoe:

在控制器或其他地方,可以这样查询:


use app\model\User;// 查询所有用户及其关联的Cloth和Shoe数据
$users = User::with(['cloths', 'shoes'])->select();// 输出结果(例如,使用dump函数)
dump($users);

这段代码首先使用with()方法指定要加载的关联数据(即clothsshoes),然后使用select()方法执行查询。查询结果将是一个包含所有用户及其关联的ClothShoe数据的数组。每个用户对象都会包含与其关联的ClothShoe数据。

5. 增加查询条件


use app\model\User;// 查询所有用户及其关联的Cloth和Shoe数据
$users = User::with(['cloths', 'shoes'=>  function (Query $query) {$query->where('is_delete', 0);}])->where('is_member', 1)->select();// 输出结果(例如,使用dump函数)
dump($users);

关于如何解决不同模型间字段名重复的问题,参考:

https://www.kancloud.cn/manual/thinkphp6_0/1037600

效果类似

图片

by 软件工程小施同学 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/316747.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

邮件群发称呼怎么写?写群发邮件开头技巧?

如何写外贸邮件群发称呼?外贸群发邮件开头怎么称呼? 邮件群发已成为企业、个人和组织之间沟通的重要手段。而一个恰当的称呼,不仅能够展现出礼貌和尊重,还能够拉近彼此的距离。那么,如何写好邮件群发的称呼呢&#xf…

【2024年必看】私域裂变的10大秘籍,让你轻松玩转市场!

在私域时代,企业需要不断地寻找新的用户来扩大自己的用户群体。然而,随着获客成本的逐渐升高,传统的广告宣传和推广方式已经不再是最优选择。因此,“老带新”的裂变策略成为了企业拉新的首选。 通过给予老用户奖励,刺…

ChatGPT持续火热,OpenAI年收入突破16亿美元

著名科技媒体The Information消息,由于OpenAI的ChatGPT等产品实现强劲增长,其年收入将突破16亿美元。 这主要得益于OpenAI在2023年发布了一系列重磅产品,包括GPT-4、ChatGPT企业版、GPT-4 Turbo、DALLE 3、苹果/安卓应用、自定义GPTs、Assis…

安全防御之授权和访问控制技术

授权和访问控制技术是安全防御中的重要组成部分,主要用于管理和限制对系统资源(如数据、应用程序等)的访问。授权控制用户可访问和操作的系统资源,而访问控制技术则负责在授权的基础上,确保只有经过授权的用户才能访问…

vis 动态添加数据

借鉴两篇文章作出了demo效果 vue用vis插件如何实现网络拓扑图_vue.js_脚本之家 src/App.vue yaofengqiao/vis-demo - Gitee.com mounted () {this.getList();},methods: {getList() {allRelation(this.queryParams).then(response > {var edgeList response;var edges n…

Go语言基础简单了解

文章目录 前言关于Go学习流程 基础语法注释变量常量数据类型运算符fmt库 流程控制if、switch、selectfor、break、continue遍历String 函数值传递和引用传递deferinit匿名、回调、闭包函数 数组和切片Map结构体自定义数据类型接口协程和channel线程锁异常处理泛型文件读取文件写…

进制的计算方法

目录 一、什么是进制 二、进制是干什么的 三、进制的计数规则 四、进制相互转换 五、用计算器计算进制 六、进制前缀 一、什么是进制 生活中进制无处不在,最常用的就是十进制。如果你没有接触过计算机或者是通信相关的知识,那么大概率你只知道十进…

09、docker 安装nacos并配置mysql存储配置信息

docker 安装nacos并配置mysql存储配置信息 1、docker启动nacos的各种方式2、Docker安装nacos3、MySQL中新建nacos的数据库4、挂载数据or配置目录5、运行 1、docker启动nacos的各种方式 内嵌derby数据源 docker run -d \ -e PREFER_HOST_MODEhostname \ -e SPRING_DATASOURCE_…

云原生容器编排问题盘点,总结分享年度使用Kubernetes的坑和陷阱

云原生容器编排问题盘点,总结分享年度使用Kubernetes的坑和陷阱 Kubernetes与云原生性能问题:忽略节点选择器导致调度效率低下问题排查和分析解决方案案例介绍 配置问题:应用服务端口与Service(KubectlProxy)控制的端口…

深度生成模型之GAN优化目标设计与改进 ->(个人学习记录笔记)

文章目录 深度生成模型之GAN优化目标设计与改进原始GAN优化目标的问题1. JS散度度量问题2. 梯度问题 优化目标的设计与改进1. 最小二乘损失GAN2. Energy-based GAN(EBGAN)3. Wasserstein GAN4. WGAN-GP5. Boundary Equilibrium GAN(BEGAN)6. Loss Sensitive GAN7. Relativeisti…

java servlet 学生管理系统myeclipse开发oracle数据库BS模式java编程网

一、源码特点 java servlet 学生管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助servletbeandao (mvc模式开发),系统具有完整的源代码和数据库,开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Oracle 10g…

Java异常篇----第二篇

系列文章目录 文章目录 系列文章目录前言一、 Excption与Error包结构二、Thow与thorws区别三、Error与Exception区别?四、error和exception有什么区别前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女…