TP6模型原理与基本操作教程_php菜鸟技术天地-CSDN博客
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