ThinkPHP5關聯模型查詢指定字段

最近研究了一下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;

    }

查詢結果:

完工!

發佈了8 篇原創文章 · 獲贊 4 · 訪問量 2065
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章