Thinkphp5.0 Model模型使用 (查询)

hasOne:有一个,加上主谓语应该是 ,A 有一个 B
hasMany:有很多,A 有很多 B
belongsTo:属于, A 属于 B 

这里我们准备3张表来理解他们的关系:
 

 user_group 用户分组表:id、title
 user 用户表:id、user_group_id、username、password
 profile 用户信息表:id、user_id、nickname、sex

 1、user表需要关联user_group表,表示每一个 用户 需要知道该用户是 哪个用户分组的;
 2、profile表 需要关联 用户表,表示该用户信息数据 是哪个用户的信息;

 我们知道一个用户组下面可以有很多用户,所以:user_group hasMany user;
 一个用户 属于 一个用户组,所以:user belongsTo user_group;

同样是user_group和user表,但我们出发点不同,关系也就不一样了。

每个用户都应该有唯一一条用户信息数据,所以:user hasOne profile;
一条用户信息 属于 一个用户,所以:profile belongsTo user

  

综上:
在User模型中,我们可以定义关联

function user_group(){

  return $this->belongsTo('UserGroup')->field('id,查询字段');
}
function profile(){

  return $this->hasOne('Profile')->field('id,查询字段');
}

在UserGroup模型中,我们可以定义关联:
function user(){

  return $this->hasMany('User')->field('id,查询字段');
}

在Profile模型中,我们可以定义关联:
function user(){

  return $this->belongsTo('User')->field('id,查询字段');
}

  

我们在查询中:

$user = model('User')->find();
$user = $user->user_group; //这样user中就可以包含当前数据对应的user_grou数据了
$user = $user->profile;//这样user中就可以包含当前数据对应的profile数据了

$order->with('user,owner')->field('')->where('o_id',$id)->find()->toArray();
//转换数组
collection();

 

# 多对多

function user(){
//关联,中间表,(自)关联id1,关联id2
return $this->belongsToMany('Region','area_region','region_id','shipping_area_id');

}

  

posted @ 2018-03-10 16:06  Z灬笑语  阅读(635)  评论(0)    收藏  举报