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');即可



而预加载就是将关联查询的数据进行了自动分层,不需要我们在处理数据结构



数据库结构


image.png


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.控制器代码

1. $data = User::with('user')->select();
2.         dump($data);

3.结果

image.png

相关文章
|
7月前
|
存储 安全 C#
技术心得记录:强命名的延迟与关联在.net程序集保护中的作用及其逆向方法
技术心得记录:强命名的延迟与关联在.net程序集保护中的作用及其逆向方法
|
8月前
|
C++
57静态关联与动态关联
57静态关联与动态关联
79 0
|
8月前
|
存储 安全 C++
【C++14保姆级教程】lambda 初始化捕获 new/delete 消除
【C++14保姆级教程】lambda 初始化捕获 new/delete 消除
318 0
|
8月前
activiti并行网关执行时每个关联表的变化
activiti并行网关执行时每个关联表的变化
146 0
|
数据库 数据安全/隐私保护 索引
Gorm学习(五)进阶:多态关联、关联标签以及事务
出现需要外键引用多个表的情况,不可能删除原来表结构,重新添加一个外键ID再建表,所以我们可以建立一个交叉表。让Addres不再依赖于User表或者Order表。
880 1
Gorm学习(五)进阶:多态关联、关联标签以及事务
|
算法 数据挖掘 开发者
关联模式评估| 学习笔记
快速学习关联模式评估。
关联模式评估| 学习笔记
|
测试技术
软件测试面试题:lr自动关联和手动关联
软件测试面试题:lr自动关联和手动关联
131 0
【TP5】关联预加载只查询指定字段(类的属性不存在)
【TP5】关联预加载只查询指定字段(类的属性不存在)
509 0
【TP5】关联预加载只查询指定字段(类的属性不存在)
【TP5】一个表里边有多个关联怎么使用预加载
【TP5】一个表里边有多个关联怎么使用预加载
103 0
【TP5】一个表里边有多个关联怎么使用预加载
|
数据库
【TP5】关联预载入根据条件查询
【TP5】关联预载入根据条件查询
282 0
【TP5】关联预载入根据条件查询