最近研究了一下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;
    }
查询结果:

点赞(0)

评论列表 共有 0 条评论

暂无评论