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();
}
}
?>
/**
* 用户与用户信息表关联模型
*/
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语句来操作较好掌握。
上一篇: MongoDB初略了解