关联查询的问题 求大神详解
问题1:关联查询 应该用 with 还是wherehas 还是用join查询比较好喃?
问题2: 如下查询 用with 想把 user那一层提出来 怎么做呀 就是合并一个对象 不用嵌套一层
问题3: 查询后的数据 如果要进行处理或者筛选 应该怎么操作? 比如我想把查询后的数据里面的email 隐藏几位 把手机号 不显示
问题4: with关联查询后列表 里面的user那个名称想改成detail 怎么修改喃?
$userFollow = $userFollow::query()->where('user_id', $user->id)->with('user')->get();
{
"status": "success",
"code": 200001,
"message": "操作成功",
"data": {
"id": 1,
"type": 0,
"user_id": 104,
"follow_id": 30,
"status": 0,
"user": {
"id": 30,
"email": 322332@qq.com,
"phone": 32233233333,
}
},
"error": null
}
高认可度评论:
首先你要明白
with
、whereHas
和join
都执行了那些sql
语句。知道它们做了什么就好区分了。将
with
关联的数据单独取出来,不用嵌套的方式。这种只能对数据进行二次处理,将嵌套数据拿到上一层,原嵌套数据unset()
。Eloquent
的模型 访问器,可以了解一下,它可以加工处理Eloquent
模型查询出来的数据。字段隐藏可以使用Eloquent
模型的hidden
属性,默认的User
模型的密码都是隐藏不返回的,它就是在hidden
数组属性里面添加了密码字段完成的。with 的修改名称,可以将你
Eloquent
模型关联的方法名称修改为detail
就行。with 可以再次進行filter 返回符合條件的關聯數據
首先你要明白
with
、whereHas
和join
都执行了那些sql
语句。知道它们做了什么就好区分了。将
with
关联的数据单独取出来,不用嵌套的方式。这种只能对数据进行二次处理,将嵌套数据拿到上一层,原嵌套数据unset()
。Eloquent
的模型 访问器,可以了解一下,它可以加工处理Eloquent
模型查询出来的数据。字段隐藏可以使用Eloquent
模型的hidden
属性,默认的User
模型的密码都是隐藏不返回的,它就是在hidden
数组属性里面添加了密码字段完成的。with 的修改名称,可以将你
Eloquent
模型关联的方法名称修改为detail
就行。在使用with 关联查询时,如果想要同级数据需要在 Resource 中再处理一次