預加載:php
主要仍是對一對多的模型操做進行分析數據庫
一對多,須要關聯的表設置關聯字段便可數據結構
例:一張user表,一張role表,role爲關聯的表app
那麼給role這個表設置字段user_idthis
一對多的應用場景主要是:spa
當有一篇文章有多個評論時code
例:article表和commentit
這時就須要進行模型的關聯操做一對多,咱們給comment設置一個字段爲article_idio
使用$this->hasMany('comment','article_id','id');便可table
一對一的應用場景:
當有一個用戶有本身惟一的資料時
例: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.結果