预加载: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.结果