关键词搜索

源码搜索 ×
×

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

发布2021-11-26浏览3575次

详情内容

​​​​​​TP6模型原理与基本操作教程_php菜鸟技术天地-CSDN博客

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

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

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

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

使用方法:

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

  1. <?php
  2. namespace app\model;
  3. use think\Model;
  4. class User extends Model
  5. {
  6. //用户关联订单表(查用户的订单)
  7. public function order(){
  8. return $this->hasOne(order::class,'uid','id'); //order是数据库order表的对应模型文件
  9. }
  10. //用户关联购买商品表(查用户购买了多少产品)
  11. public function proderot(){
  12. return $this->hasOne(proderot::class,'uid','id');//proderot是数据库proderot表的对应模型文件
  13. }
  14. }

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

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

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

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

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

id:是用户User表的ID主键

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

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

把订单表中type改order_type

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

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载