1. 程式人生 > >tp5.1關聯預載入

tp5.1關聯預載入

預載入:

主要還是對一對多的模型操作進行分析

一對多,需要關聯的表設定關聯欄位即可

例:一張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.結果