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();
有关更多信息,请参阅。您没有论文数据库表吗?