预加载:

主要还是对一对多的模型操作进行分析

 

一对多,需要关联的表设置关联字段即可

例:一张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');即可

 

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

 

数据库结构

tp5.1关联预加载

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.结果

tp5.1关联预加载

相关文章:

  • 2021-07-18
  • 2021-12-24
  • 2021-08-03
  • 2022-12-23
  • 2021-05-22
  • 2021-06-17
  • 2021-10-04
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-13
  • 2022-12-23
  • 2021-11-03
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案