tp5.1關聯預載入
阿新 • • 發佈:2018-12-14
預載入:
主要還是對一對多的模型操作進行分析
一對多,需要關聯的表設定關聯欄位即可
例:一張user表,一張role表,role為關聯的表
那麼給role這個表設定欄位user_id
一對多的應用場景主要是:
當有一篇文章有多個評論時
例:article表和comment
這時就需要進行模型的關聯操作一對多,我們給comment設定一個欄位為article_id
使用$this->hasMany('comment','article_id','id');即可
一對一的應用場景:
當有一個使用者有自己唯一的資料時
例:user表和info表
這時我們就需要進行模型的關聯操作一對一,我們給user表設定一個欄位為info_id
使用$this->hasOne('info','id','info_id');即可
而預載入就是將關聯查詢的資料進行了自動分層,不需要我們在處理資料結構
資料庫結構
1.模型
<?php namespace app\model; use think\Model; class User extends Model { protected $table = 'tp_user'; public function user() { /* * 引數一:關聯的模型名 * 引數二:關聯的模型的id * 引數三:當前模型的關聯欄位 * */ // return $this->hasOne('Role','id','role_id'); return $this->hasMany('Role','user_id','Id'); } }
2.控制器程式碼
$data = User::with('user')->select();
dump($data);
3.結果