ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## 一对一模型关联 `一个用户` 对应一个 `个人资料` [一对一关联官方文档](https://www.kancloud.cn/manual/thinkphp6_0/1037600) >[danger] hasOne('关联模型类名' [, '外键'] [, '主键']); + 关联模型类名,必填参数,指向要关联的数据表模型 ``` /** * 在admin表模型中定义一对一模型关联 * @return [type] [description] */ public function profile() { return $this->hasOne(\app\model\AdminInfo::class); } ``` + 外键:可选参数,用户资料表的字段名,此字段和用户表对应主键 + 外键省略时默认为当前模型名拼接上 `_id` + 如: 当前模型名为 admin ,此时外键默认为 admin_id ``` /** * 在admin表模型中定义一对一模型关联 * @return [type] [description] */ public function profile() { // 因为 admin_info 表和 admin 对应的字段不是 admin_id // 所以此时第二个参数必须指定为aid return $this->hasOne(\app\model\AdminInfo::class, 'aid'); } ``` + 主键:可选参数,用户表的字段名,和用户资料表的外键对应 ``` /** * 在admin表模型中定义一对一模型关联 * @return [type] [description] */ public function profile() { // hasOne的三个参数 // // 第一个参数: 必写参数,关联模型类名 // // 第二个参数: 可选参数,外键字段名 // 因为 admin_info 表和 admin 对应的字段不是 admin_id // 所以此时第二个参数必须指定为aid // // 第三个参数: 可选参数,主键字段名 // 此时没有指定主键字段(第三个参数) 默认是模型属性$pk的值, // 而$pk属性如果没有手动指定,框架默认值为:id // 也就是说:如果主键不是$pk的属性值再填写该参数 return $this->hasOne(\app\model\AdminInfo::class, 'aid', 'tid'); } ```