欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

thinkphp中难道有语法定义一对多或一对一的关系吗

程序员文章站 2022-06-07 22:46:55
...
下面的源码是一个家伙讲的,下面红色部分是我不理解的地方,请看:
/**
* 用户与用户信息表关联模型
*/
Class UserRelationModel extends RelationModel {

//定义主表名称
Protected $tableName = 'user';

//定义用户与用户信处表关联关系属性
Protected $_link = array(
'userinfo' => array(
'mapping_type' => HAS_ONE,// 这里的HAS_ONE指的是一对一的关系,HAS_ONE是thinkphp语法 还是说是自定义的,如果是自定义的,这里的HAS_ONE实质是什么,据说HAS_MANY是一对多,所以太让人不可思议了,这里定义这玩意是为了什么呢
'foreign_key' => 'uid' // 这里是外键,这个地方的作用是啥?
)
);

/**
* 自动插入的方法
*/
Public function insert ($data=NULL) {
$data = is_null($data) ? $_POST : $data;
return $this->relation(true)->data($data)->add();
}
}
?>


回复讨论(解决方案)

呵呵,一下子把你们难住了吧,哈哈!

就是关联表。一对多,可以理解成主表对从表的操作。 多对1是从表对主表的操作。
TP的多对多模型不建议使用,有BUG。
一般处理这种关联关系,我还是建议使用拼接SQL语句来操作较好掌握。