問題:
(1)canxunDanwei數據表對應的模型中有一個關聯是:
public function canxunDanwei() { return $this->belongsTo('\app\system\model\School', 'school_id', 'id'); }
即關聯school表。
(2)school表中又有一個關聯,關聯Category表,是
// 單位級別數模型關聯 public function dwJibie() { return $this->belongsTo('\app\system\model\Category', 'jibie_id', 'id'); }
如何實現多層關聯?
canxunDanwei-》school-》category
解決方法:
在canxundanwei數據表對應的模型中,編寫查詢方法:
$src = [ 'school_id' => array() ,'xueqi_id' => array() ]; $src = array_cover($srcfrom, $src); $src['school_id'] = strToArray($src['school_id']); $src['xueqi_id'] = strToArray($src['xueqi_id']); // 查詢數據 $data = $this ->when(count($src['school_id']) > 0, function($query) use($src){ $query->where('school_id', 'in', $src['school_id']); }) ->when(count($src['xueqi_id']) > 0, function($query) use($src){ $query->where('xueqi_id', 'in', $src['xueqi_id']); }) ->with( [ 'canxunDanwei' => function($query){ $query ->with(['dwJibie']) ->field('id, title, jiancheng') ; }, ] ) // ->withCount( // [ // 'dwTeacher' => function($query){ // $query->where('status', 1); // } // ] // ) ->order('id','asc') ->select();
上述代碼中,通過兩個with可以執行多層關聯查詢,但是field字段,會限制第二次關聯dwJibie的輸出。
目前嘗試了各種方法,將關聯dwJibie加入到field函數的參數中去,都無濟於事。因此,選擇去除如下代碼:
->field('id, title, jiancheng')
即不限制輸出字段。
即可。
調試結果:
(1)瀏覽器中調試JS的結果。

(2)PHP中調試結果
1.第一層關聯canxunDanwei

2.第二層關聯

