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.rhkb.cn/news/232405.html

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

相关文章

域名转移:将腾讯云转移至阿里云

当时注册域名时,腾讯域云相对便宜,但目前阿里云在业界更加成熟,因此将自己申请的域名由阿里云转移至阿里云,并记录转移过程。 一、域名转出 进入腾讯云,登陆后选择控制台,选择我的资源–域名注册–全部域名…

ssm基于java web 的QQ村旅游网站的设计+vue论文

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统旅游信息管理难度大,容错率低,管理…

迅为RK3588开发板使用 FFMpeg 进行推流

Debian/Ubuntu 系统使用以下命令安装 FFMpeg ,如下图所示: apt-get install ffmpeg 使用 ifconfig 查看开发板 ip 为 192.168.1.245 如下图所示: 使用 FFMpeg 推流一个 mp4 视频进行测试,作者将测试视频 test.mp4 放在了根目录下…

【GitHub】-design-pattern-extend(设计模式扩展)

写在前面 偶然间看到一篇文章 《Java 中保持扩展性的几种套路和实现》,写的不错,但是类图画的差了点儿意思。于是,自己动手画了画,对其中的内容作了一些调整,对包做了进一步划分,便于理解消化。以下是对Git…

【话题】ChatGPT等大语言模型为什么没有智能2

我们接着上一次的讨论,继续探索大模型的存在的问题。正巧CSDN最近在搞文章活动,我们来看看大模型“幻觉”。当然,本文可能有很多我自己的“幻觉”,欢迎批评指正。如果这么说的话,其实很容易得出一个小结论——大模型如…

深入理解CRON表达式:时间调度的艺术

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

用友U8+CRM 逻辑漏洞登录后台漏洞复现

0x01 产品简介 用友U8 CRM客户关系管理系统是一款专业的企业级CRM软件,旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。 0x02 漏洞概述 用友 U8 CRM客户关系管理系统 reservationcomplete.php文件存在逻辑漏洞,未授权的攻击者通过…

分布式锁3: zk实现分布式锁3 使用临时顺序节点+watch监听实现阻塞锁

一 zk实现分布式锁 1.1 使用临时顺序节点 的问题 接上一篇文章,每个请求要想正常的执行完成,最终都是要创建节点,如果能够避免争抢必然可以提高性能。这里借助于zk的临时序列化节点,实现分布式锁 1. 主要修改了构造方法和lock方…

案例102:基于微信小程序的旅游社交管理系统设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

socket实现视频通话-WebRTC

最近喜欢研究视频流,所以思考了双向通信socket,接下来我们就一起来看看本地如何实现双向视频通讯的功能吧~ 客户端获取视频流 首先思考如何获取视频流呢? 其实跟录音的功能差不多,都是查询电脑上是否有媒体设备,如果…

如何通过内网穿透实现无公网IP远程访问内网的Linux宝塔面板

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔,内网穿透三、使用固定公网地址访问宝塔 正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。…

高性价比LDR6028Type-C转3.5mm音频和PD快充转接器

随着市面上的大部分手机逐渐取消了3.5mm音频耳机接口,仅保留一个Type-C接口,追求音质和零延迟的用户面临着一大痛点。对于这些用户,Type-C转3.5mm接口线的出现无疑是一大福音。这款线材在刚推出时就受到了手机配件市场的热烈欢迎,…

asp.net core使用gb2312编码

nuget包 安装System.Text.Encoding.CodePages 使用 //将byte[]转化为gb2312的字符串,要确保byte[]是存储的gb2312的字符串,要不然会乱码 string ToGb213(byte[] str) {//首先需要注册Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)…

ATTCK视角下的信息收集:主机发现

目录 1、利用协议主动探测主机存活 利用ICMP发现主机 利用ARP发现主机 利用NetBIOS协议发现主机 利用TCP/UDP发现主机 利用DNS协议发现主机 利用PRC协议发现主机程序 2、被动主机存活检测 利用Browser主机探测存活主机 利用ip段探测主机存活 利用net命令探测主机存活…

大模型实战笔记02——大模型demo

大模型实战笔记02——大模型demo 1、大模型及InternLM模型介绍 2、InternLM-Chat-7B智能对话Demo 3、Lagent智能体工具调用Demo 4、浦语灵笔图文创作理解Demo 5、通用环境配置 注 笔记图片均为视频截图 笔记课程视频地址:https://www.bilibili.com/video/BV1Ci4y1…

C# Emgu.CV4.8.0读取rtsp流录制mp4可分段保存

【官方框架地址】 https://github.com/emgucv/emgucv 【算法介绍】 EMGU CV(Emgu Computer Vision)是一个开源的、基于.NET框架的计算机视觉库,它提供了对OpenCV(开源计算机视觉库)的封装。EMGU CV使得在.NET应用程序…

鸿蒙开发之拖拽事件

一、拖拽涉及的方法 Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)//拖拽开始.onDragStart((event: DragEvent) > {console.log(drag event onDragStartevent.getX())})//拖拽进入组件范围,需要监听onDrop配合.onDragEnter((event: DragEvent) …

今日小寒|三九将至,注意防寒保暖

小寒小寒,冻成一团 小寒是反应气温变化的节令 这时正值“三九”前后 标志着开始进入 一年中最寒冷的日子 小寒,是二十四节气中的第23个节气,冬季的第5个节气。小寒一过,就进入的三九天了,民间有“小寒胜大寒”之说…

使用 Maven 的 dependencyManagement 管理项目依赖项

使用 Maven 的 dependencyManagement 管理项目依赖项 介绍 在开发 Java 项目时&#xff0c;管理和协调依赖项的版本号是一项重要而繁琐的任务。 而 Maven 提供了 <dependencyManagement> 元素&#xff0c;用于定义项目中所有依赖项的版本。它允许您指定项目中每个依赖…

Netty实战(待完善)

Netty组件 1. Bootstrap, ServerBootstrap Netty 中 Bootstrap 类是客户端程序的启动引导类&#xff0c;ServerBootstrap 是服务端启动引导类。 2. NioEventLoop, NioEventLoopGroup NioEventLoop 中维护了一个线程和任务队列&#xff0c;支持异步提交执行任务&#xff0c;…