tp5.1關聯預加載 -- 並再次解釋模型的關聯

預加載: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.結果

相關文章
相關標籤/搜索