Laravel、PHP对象和数组操作

Laravel、PHP对象和数组操作,php,arrays,laravel,object,collections,Php,Arrays,Laravel,Object,Collections,所以我正在从数据库中检索一些记录,这些记录被称为研究,表中的每一项研究都可能有一篇或多篇论文。现在我只剩下$researches变量,该变量具有以下输出: { "2": { "id": 2, "name": "Science", }, "4":{ "id": 7, "name": "Biology", } "9":{ "id": 7, "name": "Chemistry", } } 键入

所以我正在从数据库中检索一些记录,这些记录被称为研究,表中的每一项研究都可能有一篇或多篇论文。现在我只剩下
$researches
变量,该变量具有以下输出:

{
"2": {
      "id": 2,
      "name": "Science",
     },
"4":{
      "id": 7,
      "name": "Biology",
    }    
"9":{
      "id": 7,
      "name": "Chemistry",
    }
}
键入
$researches[2]->papers
时,我会得到所有属于研究的论文,其ID号为2,因此我得到以下信息:

{
    "papers": [
        {
            "id": 456,
            "name": "XYZ",
            "title": "title X",
        },
        {
            "id": 470,
            "name": "YUI",
            "title": "title Y",
        }
    ]
}
我怎样才能获得所有研究的所有论文,从而得出以下结果:

{
        {
            "id": 456,
            "name": "XYZ",
            "title": "title X",
        },
        {
            "id": 470,
            "name": "YUI",
            "title": "title Y",
        },
        {
            "id": 488,
            "name": "RVF",
            "title": "Title Z",
        },
        {
         ...
        }

}

所以基本上,我想把所有研究的论文都放在一个物体里。

我想这就是你想要的。它遍历所有
研究
和所有
论文
,将其存储到
数组
中,并
将数组类型转换为对象

$papers = [];
foreach( $researches as $research ) {
  foreach( $research->papers as $paper )  {
    $papers[] = $paper;
  }
}

$papers = (object) $papers;

您可以使用Laravel collection的
Pull
方法,如下所示:

$papers=collect($researches)->pull('papers')->toArray();

有关更多信息,请参阅。

您没有论文数据库表吗?