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' ,
)
);
}
?>
分享到:
相关推荐
该方案主要解决问题,比如服务器A部署了数据库A,里面储存的是用户的信息记录user,服务器B部署了数据库B,里面存储的是订单信息记录order,两个表可以通过user_id进行关联,如果是这样,用thinkPHP5该如何进行关联...
ThinkPHP学习笔记(五)关联的SQL文件
本人博客ThinkPHP学习笔记(四)所使用的数据库文件
thinkphp5.1跨服务器,thinkphp连接不同数据库
本文实例讲述了thinkPHP5框架实现多数据库连接,跨数据连接查询操作。分享给大家供大家参考,具体如下: 1. 多数据库连接 方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为...
tp5(ThinkPHP 5.1)连接达梦数据库源码
基于tp5的swoole支持,对th5的connection进行改造,使用Swoole\Coroutine\MySQL重写了基于swoole的PDO接口,实现了mysql的数据库连接池,本地测试可用。使用时,替换thinkphp/library/think/db/Connection.php,并...
thinkphp学习笔记参考.pdf
总计php问题,将常见问题总结在一个文档里面方便阅读
主要介绍了Thinkphp使用mongodb数据库实现多条件查询方法,修改了mongodb驱动文件来实现复合查询、多条件查询,需要的朋友可以参考下
thinkphp3.2.2备份数据库插件
个人学习thinkphp所做的笔记,可能尚且不完整
thinkphp3.1.2学习笔记,常用的知识点,可以打印出来每天温习一下
三级联动省市区县的数据库,与本人的Thinkphp 三级联动博文均为同步共存,资深程序员可以自行处理
thinkphp5下利用phpexcel把excel得数据导入到mysql数据库中
主要介绍了ThinkPHP5联合(关联)查询、多条件查询与聚合查询,结合实例形式总结分析了thinkPHP5常用查询操作技巧,需要的朋友可以参考下
thinkphp5官方 模型 数据库手册离线版
拥有九大类、43页,都是作者在学习thinkphp时候做的学习笔记,此适合刚开始学习thinkphp框架人员和学完后复习所用,对php的语法有些了解的人员。此包含thinkphp介绍、配置文件格式与形式、路由、控制器、请求和响应...
thinkPHP实现数据库数据导出Excel表格