0
点赞
收藏
分享

微信扫一扫

TP6 模型关联(联表)查询理解


1.一对一 :相当查询的结果只有一条;和->find()一样

2.一对多 :相当查询的结果多条;和->select()一样

3.远程的意思:跳过中间的表来查询

例子:比如有三个关联表,省、市、区,如果只查得广东省的所有区,跳过了查市中间表

使用方法:

在用户表(User)对应的模型文件中写上关联关系,可以写多个

<?php
namespace app\model;

use think\Model;

class User extends Model
{
//用户关联订单表(查用户的订单)
public function order(){
return $this->hasOne(order::class,'uid','id'); //order是数据库order表的对应模型文件
}

//用户关联购买商品表(查用户购买了多少产品)
public function proderot(){
return $this->hasOne(proderot::class,'uid','id');//proderot是数据库proderot表的对应模型文件
}
}

hasOne('关联模型类名', '外键', '主键');

除了关联模型外,其它参数都是可选。

  • 关联模型(必须):关联模型类名
  • 外键:默认的外键规则是当前模型名(不含命名空间,下同)+​​_id​​​ ,例如​​user_id​
  • 主键:当前模型主键,默认会自动获取也可以指定传入

在上面例子中:hasOne(order::class, 'uid', 'id');

uid:order表中有字段:uid=是记录用户ID;

id:是用户User表的ID主键

如果用户表与订单表都有同一个字段type,那么就要改名

hasOne(Profile::class, 'uid')->bind([
'type' => 'order_type',
]);

把订单表中type改order_type

官网教程:​​查询数据 · ThinkPHP6.0完全开发手册 · 看云​​

举报

相关推荐

0 条评论