相信很多小伙伴在刚开始学习thinkphp5.0的时候看不太懂模型关联里边的参数什么意思,下面就详细介绍一下:
一对一关联:hasOne(‘关联模型名’,‘外键名’,‘主键名’,[‘模型别名定义’],‘join类型’);
可以看到一对一关联 hasOne里有很多参数,但最重要的就是前三个参数。
第一个参数 ‘关联模型名’ ,tp5手册是这样说的:‘一个用户都有一个个人资料’。
详细点说就是,你可以在用户模型里边使用hasOne关联个人资料表,那么第一个参数就是 个人资料表的模型名了。 看代码:
namespace app\index\model;
use think\Model;
class User extends Model {
public function profile() {
return $this->hasOne('Profile');
}
}
第二个参数就是 ‘外键名’ 其实就是 你需要关联的 Profile 表的主键名。
而第三个参数主键名,就是你当前模型跟要关联的Profile表主键对应的 字段名。
public function profile() {
// 第二个参数 id 是 Profile 表的 id, 第三个参数 pid 是当前模型下需要跟Profile表的主键关联的字段
return $this->hasOne('Profile','id','pid');
}
使用的话就是先实例化这个模型 然后查询数据用-> 的方式去取想要的数据:
$user = User::get(1);
// 输出Profile关联模型的email属性
echo $user->profile->email;
一对多关联的 参数跟一对一的几乎是一样的,学会一对一关联其他关联也能做到基本的操作。