最近研究了一下TP5的关联模型,查文档,查了文档之后发现文档写的非常的简洁(不够详细),按文档的写法能查到数据,但是我其实只需要一两个字段查出来却是全字段数据,感觉非常浪费数据库资源,那么语法怎么写呢?查询了很多资料后总结出以下方式:
首先我有两张表,user表跟dept表,用user表的dept字段关联dept表的id字段,表设计如下:


第二:在User模型层中建立关联,代码如下:
//关联部门表
//param1:被关联表名称
//param2: 被关联表的关联字段
//param3:关联表的关联字段
public function dept() {
return $this->hasOne('Dept','id','dept');
}
第三:控制器层写查询代码,$query的field字段必须要有被关联表(dept)的关联字段(id),否则报错,同理,UserModel的field一定要有关联表(user)的关联字段(dept):
//根据用户id获取部门科室
public function get_dept_office($id) {
$res=UserModel::with(['dept'=>function($query){
$query->field('id,path');
}])->where('id',$id)->field('dept,id')->find();
return $res->Dept->path;
}
查询结果:
发表评论 取消回复