Скопировать дочернюю коллекцию в родительскуюPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Скопировать дочернюю коллекцию в родительскую

Сообщение Anonymous »

Я ходил кругами, пытаясь найти лучший способ добиться этого! По сути, у меня есть три модели в иерархии:

Код: Выделить всё

Document->hasMany('Page')
Page->belongsTo('Document')->hasMany('Item')
Item->belongsTo('Page')
Моя цель — собрать все связанные экземпляры с помощью запроса к главной модели:

Код: Выделить всё

$layout = Document::with('Page.Item')->where('status', '=', 1)->get();
Это возвращает коллекцию документов с несколькими вложенными коллекциями страниц, каждая из которых имеет вложенные коллекции элементов. Когда я запускаю toArray(), я получаю:

Код: Выделить всё

array(
[0]array(
[document-title]
[pages]array(
[page-subject]
[items]array(
[item-content]
))))
И я хочу преобразовать его в:

Код: Выделить всё

array(
[0]array(
[item-content]
[pages-subject]
[document-title]
))
Я использовал несколько циклов foreach, например:

Код: Выделить всё

foreach($document as $d){
foreach($d['pages'] as $p{
$pStuff = array($p['subject']);
foreach($p['items'] as $i{
$iStuff = array($i['content']);
$input = array_merge($iStuff, $pStuff);
$data[] = $input;
}}}
Кажется, это создаёт нужный мне массив, но мне интересно, есть ли более простой способ — либо при запросе моих моделей, либо при работе с коллекцией.

Будем благодарны за любую помощь, спасибо!
-JB

Подробнее здесь: https://stackoverflow.com/questions/283 ... nto-parent
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»