需要在两个表之间查询用户,并且可以分页

假设如下表
user表和user_info表

查询条件需要符合如下:
user表的 state=1 并且role=2

user_info 表的 sex=1 并且 age>20

我该如何查询并且是分页

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

user 和 user_info 有个一对多或者一对一关系后:

User::query()->where([
    'state' => 1,
    'role' => 2,
])->whereHas('user_info', function (Builder $builder){
    $builder->where('sex',1)->where('age', ">", 20);
})->paginate(10);
2年前 评论
臭鼬 (楼主) 2年前
Su 2年前
喝卵形 (作者) 2年前
臭鼬 (楼主) 2年前
justmd5 2年前
臭鼬 (楼主) 2年前
讨论数量: 6

关联模型,正常分页 模型关联《Laravel 8 中文文档》

2年前 评论
臭鼬 (楼主) 2年前

user 和 user_info 有个一对多或者一对一关系后:

User::query()->where([
    'state' => 1,
    'role' => 2,
])->whereHas('user_info', function (Builder $builder){
    $builder->where('sex',1)->where('age', ">", 20);
})->paginate(10);
2年前 评论
臭鼬 (楼主) 2年前
Su 2年前
喝卵形 (作者) 2年前
臭鼬 (楼主) 2年前
justmd5 2年前
臭鼬 (楼主) 2年前
giao哥

连接查询呗

2年前 评论
$user_info_query = UserInfo::query()->where('sex', 1)->where('age', '>', 20)->getQuery();

User::query()->joinSub($user_info_query, 'user_info', function($join) {
      $join->on('users.id', '=', 'user_info.user_id');
})->where('state', 1)->where('role', 2)->get();
2年前 评论
Su (作者) 2年前
翟宇鑫

whereHas 性能问题可以参考:Laravel wherehasin

2年前 评论
GDDD

基本的联表查询都不会了?

2年前 评论
臭鼬 (楼主) 2年前
GDDD (作者) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!