关于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 '删除失败';
}
}
}
?>
thinkphp 的关联模型 CURD操作
最新推荐文章于 2025-05-14 16:07:36 发布
本文深入探讨了ThinkPHP中关联模型的应用,通过具体实例展示了如何使用HAS_ONE和HAS_MANY关系进行数据操作,包括查询、添加、更新和删除操作。

508

被折叠的 条评论
为什么被折叠?



