Laravel, PHP Работа с объектами и массивами - PullRequest
0 голосов
/ 19 февраля 2020

Итак, я извлекаю некоторые записи из базы данных, записи, называемые исследованиями, и для каждого исследования в этой таблице может быть одна или несколько статей. Так что теперь у меня осталась переменная $researches, которая имеет следующий вывод:

{
"2": {
      "id": 2,
      "name": "Science",
     },
"4":{
      "id": 7,
      "name": "Biology",
    }    
"9":{
      "id": 7,
      "name": "Chemistry",
    }
}

при наборе $researches[2]->papers Я получаю все документы, относящиеся к исследованию, которое имеет идентификационный номер 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",
        },
        {
         ...
        }

}

Итак, я хочу получить все бумаги всех исследования и хранить их в одном объекте.

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Вы можете использовать метод pluck коллекции Laravel следующим образом:

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

См. Laravel документы для получения дополнительной информации.

0 голосов
/ 19 февраля 2020

Я думаю, это то, что вы ищете. Он перебирает все researches и все papers из него, сохраняет его в array и typecast the array into an object.

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

$papers = (object) $papers;
...