thinkphp6入门(12)-- 一对一关联模型

定义一对一关联,例如,一个用户都有一个个人资料。

一、两表  

1.用户表:user

图片

2.工作经验表:work_experience

图片

user表的id关联work_experience表的user_id。

注意看,user_id=1的有2条工作经验

二、数据模型

主表模型:

/*** 用户表*/
class User extends Model{# 表名protected $table='user';/*** 查询用户的工作经验*/public function userWorkExperience(){//hasOne代表关联一张表  hasMany多张表  参数一:要关联的表 参数二:要关联表的外键 参数三:本表键return $this->hasOne(WorkExperience::class,'user_id','id');}}

子表模型:

/*** 工作经验*/
class WorkExperience extends Model{# 表名protected $table='work_experience';
}

三、控制器

1. 查询所有

$data = User::with('userWorkExperience')->select();
dd($data->toArray());

关联数据会在一个“关联名”的字段里

关联数据如果有多条,只会展示1条。

user_id=1的关联数据有2条,只展示了1条

图片

没有关联的数据就是null

图片

2.给User加查询条件

$data = User::with('userWorkExperience')->where('id', '>=', 2)->select();
dd($data->toArray());

图片

3. 给关联模型增加条件

$data = User::with(['userWorkExperience' => function($query) {$query->where('company', 'like', '美团%')->field('id,user_id, company');}])->where('id', '<', 3)->select();dd($data->toArray());

图片

参考:

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

https://blog.csdn.net/qq_66313178/article/details/126921557

by 软件工程小施同学

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

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

相关文章

Linux 定时任务备份MySQL数据库

Linux 定时任务基本知识 crontab yum install crontabs &#xff08;安装 crontabs&#xff09; systemctl enable crond &#xff08;设为开机启动&#xff09; systemctl start crond&#xff08;启动crond服务&#xff09; systemctl status crond &#xff08;查看状态&a…

STM32F407-14.3.9-02输出比较模式

输出比较模式 输出比较模式生成波形时 当采用上升沿或下降沿计数时&#xff0c;更改ARR的值可改变周期&#xff1b; 更改CCRx的值会影响到生成波形的相位。波形的占空比永远50% 当采用中心对齐模式时&#xff0c; 更改ARR的值可以改变周期&#xff0c;更改CCRx的值可以改…

操作系统考研笔记(王道408)

文章目录 前言计算机系统概述OS的基本概念OS的发展历程OS的运行机制OS体系结构OS引导虚拟机 进程和线程进程和线程基础进程进程状态进程控制进程通信线程线程实现 CPU调度调度的层次进程调度细节调度算法评价指标批处理调度算法交互式调度方法 同步与互斥基本概念互斥互斥软件实…

Plantuml之类图语法介绍(十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

STM32基于USB串口通信应用开发

✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进&#xff0c; 代码获取、问题探讨及文章转载可私信。 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。 &#x1f34e;获取更多嵌入式资料可点击链接进群领取&#xff0c;谢谢支持&#xff01;…

人工智能:走向智能化未来的探索

前言 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是当今科技领域最引人注目的发展方向之一。从虚构作品中的机器人到现实生活中的智能助手&#xff0c;AI正深刻地改变着我们的生活方式、工作方式以及与技术互动的方式。本文将深入探讨人工智能…

对无向图进行邻接矩阵的转化,并且利用DFS(深度优先)和BFS(广度优先)算法进行遍历输出, 在邻接矩阵存储结构上,完成最小生成树的操作。

一 实验目的 1&#xff0e;掌握图的相关概念。 2&#xff0e;掌握用邻接矩阵和邻接表的方法描述图的存储结构。 3&#xff0e;掌握图的深度优先搜索和广度优先搜索遍历的方法及其计算机的实现。 4&#xff0e;理解最小生成树的有关算法 二 实验内容及要求 实验内容&#…

模电·放大电路的分析方法——图解法

放大电路的分析方法——图解法 静态工作点的分析电压放大倍数的分析波形非线性失真的分析直流负载线与交流负载线图解法的适用范围 在实际测出放大管的输入特性、输出特性和已知放大电路中其它各元件参数的情况下&#xff0c;利用作图的方法对放大电路进行分析即为图解法。 静…

postgresql自带指令命令系列三

目录 简介 bin目录 28.pg_verifybackup 29.pg_waldump 30.postgres 31.postmaster -> postgres 32.psql 33.reindexdb 34.vacuumdb 35.vacuumlo 总结&#xff1a; 简介 在安装postgresql数据库的时候会需要设置一个关于postgresql数据库的PATH变量 export PATH/…

笙默考试管理系统-MyExamTest----codemirror(51)

笙默考试管理系统-MyExamTest----codemirror&#xff08;51&#xff09; 目录 笙默考试管理系统-MyExamTest----codemirror&#xff08;51&#xff09; 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试…

python模块rsa,非对称加密算法库

一、简介 RSA&#xff08;Rivest-Shamir-Adleman&#xff09;是一种非对称加密算法&#xff0c;广泛应用于数据加密和数字签名等安全领域。以下是对RSA算法的介绍以及其优缺点&#xff1a; 1.密钥生成&#xff1a;RSA算法生成一对密钥&#xff0c;包括公钥和私钥。公钥用于加密…

Linux CentOS 7.6安装jdk1.8教程

安装教程 第一种方式&#xff08;通过yum安装&#xff09;&#xff1a;第一步&#xff1a;输入查找命令&#xff1a;第二步&#xff1a;输入安装命令&#xff1a;第三步&#xff1a;安装完成&#xff0c;输入安装命令后&#xff0c;等到出现Complete&#xff01;代表安装完成第…

PyTorch实现逻辑回归

最终效果 先看下最终效果&#xff1a; 这里用一条直线把二维平面上不同的点分开。 生成随机数据 #创建训练数据 x torch.rand(10,1)*10 #shape(10,1) y 2*x (5 torch.randn(10,1))#构建线性回归参数 w torch.randn((1))#随机初始化w&#xff0c;要用到自动梯度求导 b …

使用 ROS 和 Geomagic Haptic 驱动 Franka 机械臂

文章目录 前言一、安装 franka_ros二、安装 OpenHaptics for Linux三、安装 3D Systems Geomagic Touch ROS Driver四、安装 franka_interactive_controllers五、使用 Geomagic Haptic 驱动 Franka 机械臂 前言 本文为在双系统上使用 ROS 和 Geomagic Haptic 驱动 Franka 机械…

滑动窗口(单调队列)

154. 滑动窗口 - AcWing题库 给定一个大小为 n≤10^6≤10^6 的数组。 有一个大小为 k 的滑动窗口&#xff0c;它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子&#xff1a; 该数组为 [1 3 -1 -3 5 3 6 7]&…

HashMap的那些事

一、HashMap与HashTable的区别 1.来历 HashTable是一种键值映射的数据结构&#xff0c;自从java发布就存在&#xff0c;而HashMap是jdk1.2后才出现的&#xff0c;虽然说HashTable出现得早且线程安全&#xff0c;但是效率很低已经弃用了&#xff0c;现在HashMap逐渐成为主流 …

Nmap脚本未来的发展趋势

Nmap脚本技术的发展趋势和前景 Nmap脚本是一种基于Lua语言开发的脚本&#xff0c;可以扩展Nmap的功能&#xff0c;用于自动化扫描、漏洞检测、服务探测、设备管理等方面。随着网络安全的不断发展和漏洞的不断出现&#xff0c;Nmap脚本技术也在不断发展和壮大。在本文中&#xf…

小米手机锁屏时间设置为永不休眠_手机不息屏_保持亮屏

环境&#xff1a;打开手机自带的锁屏时间设置发现没有 永不息屏的选项 原因&#xff1a;采用了三星OLED屏幕&#xff0c;所以根据OLED屏幕特性&#xff0c;这个是为了防止烧屏而特意设计的。非OLED机型支持设置“永不” 解决方案1&#xff1a;原生系统是支持永不锁屏的&#…

Android 13 - Media框架(20)- ACodec(二)

这一节开始我们就来学习 ACodec 的实现 1、创建 ACodec ACodec 是在 MediaCodec 中创建的&#xff0c;这里先贴出创建部分的代码&#xff1a; mCodec mGetCodecBase(name, owner);if (mCodec NULL) {ALOGE("Getting codec base with name %s (owner%s) failed", n…

ES 如何将国际标准时间格式进行格式化与调整时区

需求&#xff0c;日志收集的时候&#xff0c;时间格式是国际标准时间格式。形如yyyy-MM-ddTHH:mm:ss.SSS。 &#xff08;2023-12-05T02:45:50.282Z&#xff09;这个时区也不对&#xff0c;那如何将此类型的时间&#xff0c;进行格式化呢&#xff1f; 本篇文章体统一个案例&…