一对一关系查询
users主表
namespace app\model;
use think\Model;
class Users extends Model
{
// 模型中定义一对一关系的方法 用于建立当前模型与另一个模型之间的关系, 例如: 当前数据表对应的外键表
// profile 自定义方法名 Profile::class 关联数据表的模型文件类名
public function profile()
{
// hasOne模式 一对一关系查询 在主表里面 查询 副表的数据
// 主表关联副表 hasOne('关联模型名', ['关联外键','主键']) [users_id, id]
// 关联模型名 必须的: 关联模型名或者类名 Profile::class
// 外键:默认的外键是当前模型名(不含命名空间)+_id, 例如: 当前模型名是Users, 默认的外键是users_id
// 主键:主键是当前模型的主键, 默认会自动获取也可以指定传入
return $this->hasOne(Profile::class, 'users_id', 'id');
}
}
profile副表
namespace app\model;
use think\Model;
class Profile extends Model
{
public function users()
{
// belongsTo模式 一对一关系查询 在副表里面 查询 主表的数据
// 副表关联主表 belongsTo('关联模型名', ['关联外键','主键']) [users_id, id]
// 关联模型名 必须的: 关联模型名或者类名 Users::class
return $this->belongsTo(Users::class, 'users_id', 'id');
}
}
使用的地方 类文件里面
namespace app\controller;
use app\BaseController;
use app\model\Profile;
use app\model\Users;
class Login extends BaseController
{
public function index()
{
// hasOne 模式 查询副表的信息
// find(10) 10是副表的users_id
// $user = Users::find(1);
// 获取满足的其中一条数据
// return json($user->profile);
// 获取满足的全部数据
// return json($user->abc()->select());
// 只打印其中一个字段
// return json($user->profile->hobby);
// 修改数据
// $user->profile->save(['hobby' => '篮球'])
// 新增数据
// $user->profile()->save(['hobby' => '篮球111'])
// $user 获取user表的数据 $user->profile 获取profile附表的数据
// profile 是Users模型中定义的方法
// return $user->profile;
// 查询主表的信息一
// belongsTo 模式 查询主表的信息 需要在 profile 表 创建users方法
// find(1) 1是主表的id
// $profile = Profile::find(1);
// users 是Profile 副表模型中定义的方法
// return $profile->users->name;
// $profile->users->save(['name' => '张三111']);
// $profile->users()->save(['name' => '张三111']);
// 查询主表的信息二 不想使用belongsTo方法的话 可以这个方法 就无需再副表中定义users方法了
// profile 是Users 主表模型中定义的方法
// $user = Users::hasWhere('profile', ['id' => 3])->find();
// return $user;
// 闭包的方式 可以进行判断
$user = Users::hasWhere('profile', function ($query) {
$query->where('id', '=', 3);
})->find();
return $user;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!