with 关联查询出来的数据怎么合并成一个喃?
想把article这一层合并到上一层 用什么方法呀 感觉多层不好看
$users = $users::query()
->where('user_id', $request->user()->id)
->with('article')
->get();
{
"id": 1,
"user_id": 104,
"article": {
"id": 1,
"title": "测试标题",
"content": "测试内容",
}
},
{
"id": 2,
"user_id": 104,
"article": {
"id": 2,
"title": "测试标题",
"content": "测试内容",
}
},
那你循环组装呗,返回原始数据肯定要嵌套的(重复字段名)
这个层级本身就是
with
查询出来的结构,没办法改变。要使之达到你的效果:
第一种:可以通过查询构造器的 join查询 来替代
with
查询第二种:可以通过 API 资源 对查询后的数据进行转换
我发现挺多人问这个的,期待有人给laravel提个pr。说下我的处理方式:
可在你的
Model
基类新增一个方法:调用:
得到类似输出:
不知道是不是你想要的效果。
查看 Laravel API资源
map 试试?
为啥要拍扁呢 面向对象不挺好的吗 一个对象装另一个对象
Transformer
Arr::dot()
数据扁平化```
这个东西看你以什么表为主体了 如果是 topic 表为主体 很轻松得到你想要的数据 如果是以likes表为主体数据结构得到你想要的结构的话 就需要你自己重新处理下 map 或者 foreach 等
用join连接查询比查询出来两次循环好,请求速度会快