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');
}

浙公网安备 33010602011771号