thinkphp 的关联模型 CURD操作

本文深入探讨了ThinkPHP中关联模型的应用,通过具体实例展示了如何使用HAS_ONE和HAS_MANY关系进行数据操作,包括查询、添加、更新和删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于ThinkPHP的关联模型。
一、数据表
有三个表:
1、think_user
	字段:id、name、password、mark等
2、think_user_info
	字段:id、user_id、user_photo、user_nickname等
3、think_user_liuyan
	字段:id、user_id、liuyan等
二、Model
	文件:UserModel.class.php
	源码:
<?php
class UserModel extends RelationModel{
	protected $_link=array(
		'user_info'=>array(
			'mapping_type'=>HAS_ONE,
			'mapping_name'=>'user_info',
			'class_name'=>'user_info',
			'foreign_key'=>'user_id',
		),
		'user_liuyan'=>array(
			'mapping_type'=>HAS_MANY,
			'mapping_name'=>'user_liuyan',
			'foreign_key'=>'user_id',
			'parent_key'=>'p_id',
		),

	);
}
?>
三、Action
	文件:TestAction.class.php
	源码:
<?php
class TestAction extends Action{
	//查询
	public function index(){
		$user=D('Home.User');
		$list=$user->relation(true)->order('id desc')->findAll();
		dump($list);
	}
	//添加
	public function add(){
		$user=D('Home.User');
		$data=array();
		$data['name']='cloudcome666';
		$data['password']=md5('cloudcome66');
		//HAS_ONE的插入:1维数组
		$data['user_info']=array(
			'user_nickname'=>'网页写入:云淡然665',
		);
		//HAS_MANY的插入:2维数组
		$data['user_liuyan']=array(
			array('liuyan'=>'由网页写入11111111111111'),
			array('liuyan'=>'由网页写入22222222222222'),
		);
		$list=$user->relation(true)->add($data);
	}
	//更新
	public function save(){
		$user=D('Home.User');
		//必须指定主键!!
		$data['id']='17';
		//!!这里更新mark的原因是让主表也有更新操作
		//这样下面的$list的结果就是true,否则就永远是false
		$rn=date('ymdHms');
		$data['mark']=$rn;
		//HAS_ONE的更新:1维数组
		$data['user_info']=array(
			'user_qq'=>'29999',
		);
		//HAS_MANY的更新:2维数组
		$data['user_liuyan']=array(
			array('id'=>'9','liuyan'=>'id=9由网页hfg7hfy7717797181222更新7774764576'),
			array('id'=>'10','liuyan'=>'id=10由网页rtrtu77y7277987221111更新274574572222'),
		);
		$list=$user->relation(true)->where('id=17')->save($data);
		if($list){//$list 为true
			echo '更新成功';
		}else{
			echo '更新失败';
		}
	}
	//删除
	public function del(){
		$user=D('Home.User');
		$list=$user->relation(true)->where('id=16')->delete();
		dump($list);
		if($list){//$list 为true
			echo '删除成功';
		}else{
			echo '删除失败';
		}
	}
}
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值