ThinkPHP学习笔记(十八)数据库表的关联操作

RelateAction

<?php
/**
 * ThinkPHP中的
 * 一对一:
 * 		有:HAS.ONE 属于:BELONGS.TO
 * 一对多:
 * 		有:HAS.MANY 属于:BELONGS.TO
 * 多对多:
 * 		MANY.TO.MANY
 * 
 * 如果加入关联需要加入relation方法并将其设为true
 * 同时Model需要继承RelationModel
 */
class RelateAction extends Action{
	public function index(){
		$user=D('User');
		//HAS_ONE和HAS_MANY
		//1.查询
		//如果加入关联需要加入relation方法并将其设为true
		//同时Model需要继承RelationModel
//		$list=$user->relation(true)->select();
		
		//2.插入
//		$data['username']='student';
//		$data['password']='student';
//		$data['card']=array(
//			array('cardname'=>'student1'),
//			array('cardname'=>'student2'),
//		);
//		$list=$user->relation(true)->add($data);

		//3.更新
//		$data['username']='user';
//		$data['password']='user';
//		$data['card']=array(
//			//作更新的时候,需要加入需要更新的card对应的id
//			array('id'=>1,'cardname'=>'修改1'),
//			array('id'=>2,'cardname'=>'修改2'),
//		);
//		$list=$user->relation(true)->where('id=1')->save($data);
		
		//4.删除
//		$list=$user->relation(true)->delete('23');
		dump($list);
	}
	public function belongs(){
		$card=D('Card');
		$list=$card->relation(true)->select();
		dump($list);
	}
}
?>

HAS关系:(主要看$link的设置)

<?php
class UserModel extends RelationModel {
	//参数:
	//1.验证字段(表单中的名称或者辅助字段例如验证码)
	//2.验证规则(结合附加规则一起使用)
	//3.错误提醒
	//4.验证条件(0:1:2:)最好是选择手册中的常量来填写
	//5.附加规则;验证方式:regex;function名;callback;confirm(验证两个字段是否相同);equal;in;unique;
	//				常用规则:require:必须存在;email邮箱;url;currency货币;number;
	//6.验证时间
	//				是指数据库进行数据库操作时的验证时机(增加数据时,编辑时,全部清空下验证)
	//				Model::MODEL_INSERT
	//				Model::MODEL_UPDATE
	//				Model::MODEL_BOTH
	//自动验证开始
	protected $_validate = array (//在模型中添加国际化
	array ('username', 'require', '<!--{%usernamenull}-->', 0, 0, 1 ), array ('username', 'checklen', '用户名长度不合法', 0, 'callback', 3 ), array ('password', 'require', '用户名必填', 0, 0, 1 ), array ('repassword', 'require', '用户名必填', 0, 0, 1 ), array ('password', 'repassword', '密码不一致', 0, 'confirm', 1 ) )//			array('createip','email','邮箱格式不对',0,'regex',1),
	;
	//可以设置多个关联
	protected $_link = array (
		//'condition'
		//foreign_key
		//mapping_fields 需要关联的字段
		//as_fields 
		'card' => array (
			//HAS_ONE其他的只是修改关系;
			//HAS_MANY:多了mapping_limit、mapping_order、parent_key(自引用关联的字段,默认为parent_id)
			'mapping_type' => HAS_MANY, 
			'class_name' => 'card', 
			'mapping_name' => 'card', 
			'foreign_key' => 'uid' ,
			'mapping_fields' => array('id','uid','cardname'), 
//			'mapping_fields' => 'id,uid,cardname',
			//默认是card是属于user之下的,查询出来是一个二维数组;as_fields可以将想显示的字段放入到一维数组当中  
			'as_fields' => 'id:usid,cardname', 
		)
	 );
	public function checklen($data) {
		if (strlen ( $data ) > 15 || strlen ( $data ) < 5)
			return FALSE;
		return true;
	}
	function modelTest() {
		echo '测试的跨模型操作,调用模型中的方法';
	}
}
?>

Belongs(属于关系,操作字表)

<?php
class CardModel extends RelationModel {
	//可以设置多个关联;多个'' => array();
	protected $_link = array (
		'user' => array (
			'mapping_type' => BELONGS_TO, 
			//card本身的uid
			'foreign_key' => 'uid' ,
		)
	 );
}
?>


知识笔记(五十八)———Thinkphp目录结构 【代码】知识笔记(五十八)———Thinkphp目录结构。 阅读详情

相关推荐

保姆级教程:手把手教你用Jacquard V2数据集训练机器人抓取模型(附完整代码)

本文提供了一份详细的保姆级教程,手把手教你使用Jacquard V2数据集训练机器人抓取模型。从环境配置、数据准备到模型架构设计、训练优化和实际部署,全程解析并附完整代码,帮助开发者快速掌握视觉抓取技术。

weixin_29031057的博客 314

tp6 连接多个数据库的表(动态配置数据库连接)(Db::name和Db::query)

官方文档:https://www.kancloud.cn/manual/thinkphp6_0/1037531

php菜鸟技术天地 3586

告别Overleaf!本地LaTeX环境配置:VSCode+TeXLive完全指南(Windows/Mac双平台)

本文详细介绍了如何在Windows和Mac平台上配置本地LaTeX环境,使用VSCode和TeXLive打造高效的专业写作工作流。从TeXLive安装到VSCode插件配置,再到高级技巧与性能优化,帮助用户摆脱Overleaf限制,实现更快速、更私密的学术写作体验。

3c4x5z6v7b的博客 952

ThinkPHP 关于数据库表与表之间关联的两种方法

Thinkphp

天地一粒沙的博客 2681

endnote让参考文献整整齐齐

这篇文章主要是针对利用 endnote 插入参考文献时,参考文献第一行和后面的行对不齐的问题 下面是示意图 可以看到我们的参考文献对的整整齐齐的,比较好看。 下面介绍具体步骤 1、打开endnote。编辑我们使用的参考文献样式。我这儿是叫 ZZ_MODIFIED_GEEBINF 复制 2、找到布局,每个参考开头,将光标放在在参考开头后面,点插入字段,制表符 3、右下角悬挂式输出哪儿选择全部段...

雾隐雾现的至渝博客 5万+

手把手教你用SysMax桥接软件搞定CANoe、INCA和刷写工具(附驱动配置避坑点)

本文详细介绍了如何使用SysMax PCAN FD桥接软件实现CANoe、INCA和刷写工具的无缝对接,提供从驱动配置到多软件协同的全链路指南。重点解析了驱动安装避坑点、CANoe配置技巧、INCA集成方法以及刷写工具链优化方案,帮助汽车电子工程师构建高效开发环境。

weixin_30500105的博客 391

ThinkPHP--关联模型

关联模型可以非常容易的操作多种 关联表的增、删、改、查。一.模型简介 关联模型,一共有三种模式。一对一:ONE_TO_ONE,包括 HAS_ONE 和 BELONGS_TO; 一对多:ONE_TO_MANY,包括 HAS_MANY 和 BELONGS_TO;多对多:MANY_TO_MANY。 一对一:用户表和身份证表,一个用户只能对应一个身份证,而一个身份证只能对应一 个用户。这就是一对一。一对多...

ClearloveYt的博客 519

Python爬虫抓取淘宝商品详情页信息:从入门到高级技术应用

通过本篇博客,我们了解了如何使用Python爬虫抓取淘宝商品详情页的信息,如何使用requests和Selenium抓取静态和动态内容,如何应对淘宝的反爬虫机制,如何将抓取的数据保存到CSV文件等。随着爬虫技术的不断发展,开发者可以根据需要选择合适的工具和技术,如使用分布式爬虫框架提高抓取效率,或者利用OCR技术处理验证码等问题。在进行淘宝爬虫时,需要注意遵循相关法律法规和平台的爬虫政策,避免对平台造成过度的负担或侵犯其合法权益。

2201_76125261的博客 462

thinkphp6不同服务器 不同数据库 关联查询

mysql跨库、跨服务器、两个表关联查询

guyi57的博客 1549

5、癌症数据预处理技术与深度学习在癌症预测中的应用

本文详细介绍了癌症数据预处理技术和深度学习在癌症预测中的应用。针对CT扫描图像、X射线图像、超声图像、基因表达数据和文本数据等不同类型的癌症数据,分别阐述了去噪、插值、配准、归一化等预处理技术的具体方法。同时,分析了深度学习在乳腺癌、白血病和宫颈癌预测中的作用,结合相关影响因素探讨了模型的应用潜力。此外,还总结了深度学习在癌症预测中面临的挑战及未来发展方向,为癌症的早期诊断与精准预测提供了理论支持和技术参考。

alice7model的博客 123

全面认识PFC和LLC

想象一下,你在拉一辆车,如果你的力气都用在推动车子前进的方向上,这样拉车会比较轻松。而如果你的力气用在不正确的方向,比如侧向、斜向,那就需要更大的力气才能推动车子。PFC就是在帮助电流“朝着正确的方向”流动,这样可以用更少的能量做更多的事情,减少无用的功率损耗。PFC负责将电流方向对齐,让电源效率更高,而LLC负责电压的高效转换,两者配合可以在更宽的负载范围内保持高效率。综上所述,PFC LLC电路是一种高效的电源转换电路,通过PFC模块和LLC模块的组合,实现了从交流电到直流电的高效转换。

weixin_43199439的博客 6098

thinkphp框架中“关联操作”的完整定义详解

转自:http://www.phpthink.cn/html/221.html 在复杂的关联操作中,如果要给关联定义增加可选的属性,我们可以采用完整定义的方式。 完整定义的格式是: protected $_link = array( '关联表名1' => array( '该表的关联方式的属性1' => '定义', ...

weixin_30662849的博客 243

OceanBase备租户创建(二):通过BACKUP DATABASE PLUS ARCHIVELOG

OceanBase数据库备租户创建方法二:通过BACKUP DATABASE PLUS ARCHIVELOG功能实现,特别适用于社区版和单机版部署模式。

Sebastien23的博客 542

三十八、ThinkPHP_6 多对多关联查询

user:用户表;role:角色表;access:中间表 access 表包含了 user 和 role表 的关联 id,多对多模式 //User 模型中,设置多对多关联 //belongsToMany 为多对多关联, //belongsToMany('关联模型','中间表',['外键','关联键']); public function roles() { return $this->belongsToMany(Role::class,Access::class); } Role.php 和.

汪学友的博客 2008

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

thinkPHP6.0简单深入

自动加载函数 _autoload() __autoload:一个项目依赖多个框架,会报重复定义致命错误。 spl_autoload_register() spl_autoload_register:php5.3之后针对__autoload的缺陷出来的函数。 define bool define ( string $name , mixed $value [, bool $case_insensitive = false ] ) MySQL cmd密码登入 xampp中的mysql(MariaDB

qq_48307365的博客 3368

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ThinkPHP框架-4

二十五、分页功能

weixin_45730243的博客 506

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

最新ThinkPHP5入门进阶实操视频教程 附源码

课程目录 源码 1.ThinkPhP5 视频教程课程内容(一):课程大纲.mp4 10.ThinkPhP5 视频教程(十):查询语言-上.avi 11.ThinkPhP5 视频教程(十一):查询语言下.avi 12.ThinkPhP5 视频教程(十二讲):模型和关联-上.avi 13.ThinkPhP5 视频教程(十三讲):模型和关联-下.avi 14.ThinkPhP5 视频教程(十...

weixin_46240917的博客 403

php ajax返回一个页面跳转,ThinkPHP页面跳转、Ajax技巧详细介绍(十八)

ThinkPHP页面跳转、Ajax技巧详细介绍一、页面跳转$this->success('查询成功',U('User/test'));├─//跳当前模块方法下:├─ $this->success('查询成功','test');└─//跳到 指定跳转模块方法下this->success('查询成功',U('User/test'));$this->error('查询失败,3秒后...

weixin_35929851的博客 552

php一对一教学视频,ThinkPHP5基础入门视频教程 37课全 包含源码

教程简介本课程是基于最新ThinkPHP5版本框架录制的视频教程,学完本套视频教程可完全掌握全新的ThinkPHP5技术教程由TPshop团队倾力制作, 课程通俗易懂,新手初学者一看就懂,一听就会全套教程共37课,包含源码,视频高清,支持PC,手机,电视在线观看,也可下载视频该课程是站长本人在别人那里花钱购买而来(我自己也在学哈*_*)分享给互联创盟的朋友们教程截图教程目录01.ThinkPhP5...

weixin_39685024的博客 199

【2022/01/24】thinkphp源码无差别阅读(二十八)

thinkphp源码无差别阅读(二十八) ORM阅读 db/Query.php 表达式方式指定排序:orderRaw 表达式方式指定查询字段:fieldRaw 指定field排序:orderField 随机排序:orderRand 使用表达式设置数据:exp 表达式方式指定当前数据表:tableRaw 获取执行的sql,而不进行查询:fetchSql 批量执行:batchSql using支持:using 存储过程调用:procedure 指定group:group 指定having:having 指定

312

【2022/1/13】thinkphp源码无差别阅读(十八)

thinkphp源码无差别阅读(十八) framework阅读 think/route/dispatch/Callback.php 执行:exec think/route/dispatch/Controller.php 属性:controller、actionName 初始化:init 执行:exec 使用反射机制注册控制器中间件:registerControllerMiddleware 实例化访问控制器:controller think/route/dispatch/Url.php 构造方法:

332

Thinkphp5第十八讲:资源路由和快捷路由

一、资源路由(TP5支持设置RESTFUL请求的资源路由) 方法1: Route::resoure('blog','index/blog');//blog为路由规则,index/blog意思是index模块下的blog控制器 方法2: 在路由配置文件中使用_rest_添加资源路由定义: return[ '_rest_'=>[ 'blog'=>'index/blog', ...

phpzt的专栏 669

Thinkphp6笔记十八:默认分页

1.分页1 1.控制器代码: public function test(){ // 查询状态为1的用户数据 并且每页显示10条数据 $list = Db::name('log')->order('id', 'desc')->paginate(10); // 渲染模板输出 return view('', ['list' => $list]); } 2.模板调用: <div> <u

qq_29294165的博客 597

使用thinkphp搞了一个简单的三级分销

使用thinkphp搞了一个简单的三级分销关于为何要写-分销第一步是先思考下逻辑功能快捷键合理的创建标题,有助于目录的生成创建一个自定义列表如何创建一个注脚注释也是必不可少的 关于为何要写-分销 第一次看到这个分销这个词的时候,脑海里就蹦出了传销,在新闻联播等等媒体的传播下,让我对其有着极奇的排斥和生恶的感觉,传销固然可恶,但在三级分销下国家还是允许的,好吧!工具是给人用的,是作恶还是行善,在于的...

qq_20964509的博客 1万+

ThinkPHP页面跳转、Ajax技巧详细介绍(十八)

ThinkPHP页面跳转、Ajax技巧详细介绍

乐杨俊浅谈LAMP 3157
上一篇: UMl——用例图
下一篇: ThinkPHP学习笔记(十九)权限管理的实现方式RBAC
piperzero
博客等级 码龄21年 1377粉丝 504原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值