关联模型
文档地址:https://docs.qq.com/doc/DQUFEZ0N1SkFQR1p4
// 用户基础表和扩展表 一对一关系 hasone
public function userinfo()
{
# 关联关系 关联模型 外键id 主键id
// return $this->hasOne(UsersInfo::class,'users_id','id');
// 简写的原则就是 外键就是 表名_id 主键 就是 id 此时就可以简写
return $this->hasOne(UsersInfo::class);
}
// 一个用户对应文章 一对多关系 hasmany
public function articles()
{
return $this->hasMany(Articles::class,'user_id','id');
}
// 多对多关系 belongsToMany
public function auths()
{ # 关联模型 中间表表名—没有前缀 本模型 对应中间表中的字段 关联模型对应中间表的字段
return $this->belongsToMany(Auth::class,'user_auth','user_id','auth_id');
}
# n+1
$user = User::find(1);
dump($user->userinfo);
#预加载
$user = User::with('userinfo')->where('id',1)->first();
#调用扩展名中的信息
dump($user->userinfo->body);
dump($user);
$user = User::find(1);
$arts = $user->articles->toArray();
// 写条件
$arts = $user->articles()->where('id','>',1)->get()->toArray();
$arts = User::with(['articles'=>function($query){
$query->where('id','>=',1);
}])->where('id',1)->first();
dump($arts);
// 取文章列表
dump($arts->articles);