Laravel 从多维集合中压平和提取

2023-12-10

我必须检索一个数组id从给定的集合中,类似[10,54,61,21等]。 我试过了flatten, pluck,但除了foreach这是我想在这一步删除的东西。

// Model
class Children extends Eloquent {
    public function directChildrens(){
        return $this->hasMany('App\Children','father_id','id')->select('id','father_id');
    }

    public function childrens(){
        return $this->directChildrens()->with('childrens');
    }
}

// Controller
return $children->childrens()->get();

正如预期的那样,它工作得很好。这是一个结果:

[{
"id": 10,
"father_id": 2,
"childrens": [
    {
        "id": 54,
        "father_id": 10,
        "childrens": [
            {
                "id": 61,
                "father_id": 54,
                "childrens": []
            }
        ]
    },
    {
        "id": 21,
        "father_id": 10,
        "childrens": []
    }
]
}]

我怎样才能执行拔取('id')这个集合以获得[10,54,61,21] ?


$result = [
            [
                "id" => 10,
                "father_id" => 2,
                "childrens" => [
                    [
                        "id" => 54,
                        "father_id" => 10,
                        "childrens" => [
                            [
                                "id" => 61,
                                "father_id" => 54,
                                "childrens" => []
                            ]
                        ]
                    ],
                    [
                        "id" => 21,
                        "father_id" => 10,
                        "childrens" => []
                    ]
                ]
            ]
        ];
return collect($result)
        ->map(function ($value) {
            return Arr::dot($value); // converts it to the dot notation version (added the example at the end)
        })
        ->collapse() // collapse them into a single one
        ->filter(function ($value, $key) {
            return $key === 'id' || Str::endsWith($key, '.id'); // filter first id + patterns of .id
        })
        ->values() // discard dot notation keys
        ->toArray();

Arr::dot()方法将集合转换为以下格式,将所有集合展平为同一级别。

[
  {
    "id": 10,
    "father_id": 2,
    "childrens.0.id": 54,
    "childrens.0.father_id": 10,
    "childrens.0.childrens.0.id": 61,
    "childrens.0.childrens.0.father_id": 54,
    "childrens.0.childrens.0.childrens": [],
    "childrens.1.id": 21,
    "childrens.1.father_id": 10,
    "childrens.1.childrens": []
  }
]

感谢 @Dan 关于已弃用/删除功能的警告array_dot。替换为Arr::dot()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 从多维集合中压平和提取 的相关文章

  • 在这种情况下 b 是标量对象吗?

    include
  • 为什么数组索引或基索引以 0 开头?

    在使用任何语言处理数组时 我一直想知道为什么数组的基地址或索引号以零开头 int x 5 21 34 55 314 45 现在 如果我想访问数组的任何第一个值 我将不得不使用x 0 但是为什么 0 这背后有什么逻辑呢 在 C 语言中 数组的
  • 分层对象和 AutoFixture

    我已经实现了一个用于存储标签的类 标签集合必须是分层的 所以我的类是 public class Tag public int Id get set public int Description get set public Tag Pare
  • 数组匹配值过滤器 PHP [重复]

    这个问题在这里已经有答案了 我尝试在数组中搜索 但根本没有得到任何结果 假设我有一个包含一些值的数组 所以当我想搜索它们时 它总是返回 null 不知道为什么 假设这是我的数组 data Array 0 gt Array id gt 122
  • 存储 PHP 数组的首选方法(json_encode 与序列化)

    我需要将多维关联数据数组存储在平面文件中以进行缓存 我偶尔可能会遇到需要将其转换为 JSON 以便在我的 Web 应用程序中使用的情况 但绝大多数时候我会直接在 PHP 中使用该数组 在此文本文件中将数组存储为 JSON 或 PHP 序列化
  • 如何将两个不同的哈希数组中的值添加在一起?

    我有两个哈希数组 哈希值的键不同 player scores1 first name gt Bruce score gt 43 time gt 50 first name gt Clark score gt 45 minutes gt 20
  • 如何将从 date_parse 返回的日期数组转换回日期字符串

    我有一个由 php 例程 date parse 返回的格式的日期数组 我需要将此日期数组转换回日期字符串 我正在寻找一个与 date parse 例程相反的函数 这是一个接受日期数组作为参数并返回日期字符串的函数 http php net
  • Foreach Ajax Json - Jquery

    谁能帮我 我有一个数组 stars Chris Pine Keira Knightley Kevin Costner 我想做的是 foreach star 我想将输入附加到 div 和 foreach star 它们在输入中具有值 这就是我
  • 为神经网络打乱两个 numpy 数组

    我有两个 numpy 数组用于输入数据 X 和输出数据 y X np array 2 3 sample 1 x 16 4 dtype float sample 2 x y np array 1 0 sample 1 y 0 1 dtype
  • 将构造函数传递给 Array.map?

    我怎样才能做这样的事情 var a 1 2 3 4 a map Date constructor 此代码在 Google V8 上引发错误 SyntaxError Unexpected number 我也尝试过 a map Date con
  • 在 Scala 中将元素追加到列表末尾

    我无法添加 type 元素T到一个列表中List T 我尝试过myList myElement但它似乎创建了一个奇怪的对象并访问myList last始终返回放入列表中的第一个元素 我怎么解决这个问题 List 1 2 3 4 Result
  • Composer 安装要求

    我正在尝试将 Composer 安装到 Laravel 项目中 当我做的时候sudo composer install在项目目录中它显示了两个错误 Problem 1 Installation request for simplesoftw
  • 在 laravel 中禁用特定路由的 csrf

    我有一个支付系统 数据被提交到第三方网站然后被拉回 当数据返回时 它会到达特定的 url 比如 ok 路由 REQUEST transaction 但由于 Laravel 中间件 我遇到了令牌不匹配的情况 第三方支付API无法生成token
  • Laravel Homestead 中 npm 安装错误有解决方案吗?

    Windows 10 家园 虚拟盒6 0 8 流浪者2 2 5 节点 v12 5 0 npm v6 10 1 我想做的就是在新安装的 Laravel 应用程序中执行 npm install 命令 但我不断收到错误 经过两天的谷歌搜索并尝试了
  • 如何使用 Retrofit 解析嵌套 json....?

    我不知道该怎么办使用 Retrofit 解析 json 熟悉使用 Retrofit 解析简单的 json 但不熟悉解析嵌套Json using Retrofit 这是我的 Json 数据 current observation image
  • 如何在 perl 中合并两个数组,交替每个数组中的值

    假设我有 2 个如下所示的数组 a1 Vinay Raj harry b1 dude rock 合并后我想要这样的结果 Vinay dude Vinay rock Raj dude Raj rock harry dude harry roc
  • 如何从文本文件读取整数到数组

    这就是我想做的 我对此有些不满 但我希望你能容忍我 这对我来说是一个非常新的概念 1 在我的程序中 我希望创建一个包含 50 个整数的数组来保存来自文件的数据 我的程序必须获取用户的文档文件夹的路径 2 文件的名称为 grades txt
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • 来自索引范围 Swift 的新数组

    我怎样才能做这样的事情 从数组中取出前 n 个元素 newNumbers numbers 0 n 目前出现以下错误 error could not find an overload for subscript that accepts th
  • 二维数组的 MPI 数据类型

    我需要将一个整数数组的数组 基本上是一个二维数组 从根传递给所有处理器 我在 C 程序中使用 MPI 如何声明二维数组的 MPI 数据类型以及如何发送消息 我应该使用广播还是分散 你需要使用播送 http www netlib org ut

随机推荐

  • 如何在 TeamCity 中构建 Delphi 项目

    我正在尝试在 TeamCity 中构建一个 delphi 项目 但无法让它工作 我正在使用 MSBuild 来构建项目 并且还向构建添加了 BDS 参数 但我不断收到错误 MSB4040 项目中没有目标 您需要注意几件事 首先 需要设置De
  • 运行导出 apk 时出现“java.lang.ClassNotFoundException”错误

    我在 Eclipse 中编写了一个 Android 应用程序 并在手机上使用运行命令 在我的手机上运行成功 但我使用 Android Tools gt Export Signed Application Package 导出我的应用程序 然
  • Go 中独特函数的集合

    我正在尝试在 go 中实现一组功能 上下文是一个事件服务器 我想防止 或至少警告 为一个事件多次添加相同的处理程序 我读过 地图通常用作集合 因为可以轻松检查成员资格 if ok set item ok don t add item els
  • 在 PKCS7 (CMS) 中使用相同的响应 xml 签名对多个位置进行签名

    PDF 文档需要使用国家数字身份进行签名 国家数字身份WebService提供了签署文档的设施 在我的项目中我已经集成了相同的设施 请求设计服务给出响应PKCS7 CMS 格式 我想在多个位置附加相同的响应 因此我在收到来自服务的响应后创建
  • C# 创建缩略图(低质量和大尺寸问题)

    public void CreateThumbnail Image img1 Photo photo string targetDirectoryThumbs int newWidth 700 int newHeight 700 doubl
  • 包含头文件时,路径区分大小写吗?

    给定这个目录树 src MyLibrary MyHeader h src file cpp file cpp include mylibrary myheader h 在 VS 中编译 file cpp 可以 在 gcc 中编译失败 标准怎
  • 防止未经授权的成员加入 Hazelcast 集群

    我们正在更改我们的一个应用程序以使用 Hazelcast 3 11 Community Edition 并在一些主机上运行的多个 JVM 之间进行一些锁定 我们按照语法配置集群 如下所示 public class HazelcastBuil
  • 获取JavaFX中节点的高度(生成布局通道)

    如何在JavaFX中获取节点的高度或首选高度 我有3VBox我想将节点添加到最自由的面板 例如 Childrens Total Height of the children s Sum VBoxA 5 890 VBoxB 4 610 VBo
  • 两台服务器之间的 DDP 不会重新连接

    我有两个流星应用程序通过不同服务器上的 DDP 连接 服务器 A 将数据发送到服务器 B 这就是它们的工作方式 Server A Items new Meteor Collection items Items insert name ite
  • 使用 Storyboard Segue iOS 将数据传递给视图控制器

    我知道有很多关于此的帖子 但我已经尝试了一切 但没有任何效果 因此 我尝试将两个视图控制器之间的对象传递给嵌入导航项中的 DBKIngredientsViewController 我有一个带有标识符 showIngredientsSegue
  • BoxPlot、Matplotlib 内的观察数量

    您好 我正在尝试使用 matplotlib 显示箱线图中的观察数量 一些虚假数据的例子是 data1 150 155 175 200 245 255 395 300 305 320 375 400 420 430 440 data2 225
  • 制作来自 Spirit Qi 的共享指针向量

    这是来自的后续问题上一个问题 我可以从我的语法中解析为字符串向量 但我似乎无法解析为向量指向字符串的共享指针 i e std vector
  • 需要 Pure/jQuery Javascript 解决方案来清除文本区域中的 Word HTML

    我知道这里已经谈到了这个问题 但我还没有找到适合我的情况的可行解决方案 所以我想让智囊团重新开始工作 看看能做些什么 我有一个表单中的文本区域 需要检测何时将某些内容粘贴到其中 并清除任何隐藏的 HTML 和引号 此表单的内容通过电子邮件发
  • 图片而不是单选按钮/文本?

    我有一个包含 9 个选项的单选框选项 我想用图像替换按钮及其旁边的文本 选择将显示 4 种颜色的色样范围 All Black Blue 巧克力 Plum Green Orange Magnolia Woods 因此 我需要所选选项旁边的箭头
  • 使用 Apache POI 获取单元格颜色

    我正在尝试学习如何在一个小项目中使用 Apache POI 我想使用 Excel 通过使用颜色编码的单元格来创建 房间布局 并将数据加载到 Java 程序中 我认为了解如何访问单元格的颜色属性 但我要问的是 是否可以访问空白单元格的颜色 无
  • Windows 安装程序使用 NT AUTHORITY\SYSTEM 而不是登录用户

    我有一个 Windows 安装程序 它在安装过程中创建数据库 安装应用程序时CREATE DATABASE由于 Windows 安装程序使用了错误的用户 进程失败 它正在使用NT AUTHORITY SYSTEM而不是使用登录用户 NT A
  • 无法在主方法中调用方法

    我正在尝试在另一个方法中调用一个方法 例如在 C 中 如下所示 public class Exercise1 Scanner scanner new Scanner System in public int FirstNumber publ
  • 具有行中多个 TextView 的自定义 TableLayout

    我想创建带有这样的行的自定义表格布局 TV 用于 TextView 即我想向该行添加 11 个 TextView 每行都以标题开始 然后添加 5 对 TextView 以便表行与屏幕一样宽 这是我的代码 public class FlowT
  • C# 中的度量单位 - 几乎

    灵感来自F 中的测量单位 并且尽管断言 here 你无法在 C 中做到这一点 前几天我有一个想法 我一直在研究它 namespace UnitsOfMeasure public interface IUnit public static c
  • Laravel 从多维集合中压平和提取

    我必须检索一个数组id从给定的集合中 类似 10 54 61 21等 我试过了flatten pluck 但除了foreach这是我想在这一步删除的东西 Model class Children extends Eloquent publi