на данный момент я много узнаю о Laravel и красноречивых, поэтому, пожалуйста, прости мои "глупые" вопросы.
Моя цель
Я хотел бы save
вложенных элементов иget
их позже с вложенной структурой
Пример:
Illuminate\Database\Eloquent\Collection {#3246
all: [
App\Item {#3254
id: 2,
parent_id: null,
title: "Parent",
created_at: "2019-10-04 14:22:23",
updated_at: "2019-10-04 14:22:23",
children: Illuminate\Database\Eloquent\Collection {#3285
all: [
App\Item {#3287
id: 3,
parent_id: 2,
title: "Child 1",
created_at: "2019-10-04 14:29:59",
updated_at: "2019-10-04 14:29:59",
},
App\Item {#3289
id: 4,
parent_id: 2,
title: "Child 2",
created_at: "2019-10-04 14:30:16",
updated_at: "2019-10-04 14:30:16",
},
],
},
},
],
}
Текущий результат
Мой текущий результат таков:
Illuminate\Database\Eloquent\Collection {#3246
all: [
App\Item {#3254
id: 2,
parent_id: null,
title: "Parent",
created_at: "2019-10-04 14:22:23",
updated_at: "2019-10-04 14:22:23",
children: Illuminate\Database\Eloquent\Collection {#3285
all: [
App\Item {#3287
id: 3,
parent_id: 2,
title: "Child 1",
created_at: "2019-10-04 14:29:59",
updated_at: "2019-10-04 14:29:59",
},
App\Item {#3289
id: 4,
parent_id: 2,
title: "Child 2",
created_at: "2019-10-04 14:30:16",
updated_at: "2019-10-04 14:30:16",
},
],
},
},
App\Item {#3259
id: 3,
parent_id: 2,
title: "Child 1",
created_at: "2019-10-04 14:29:59",
updated_at: "2019-10-04 14:29:59",
children: Illuminate\Database\Eloquent\Collection {#3282
all: [],
},
},
App\Item {#3280
id: 4,
parent_id: 2,
title: "Child 2",
created_at: "2019-10-04 14:30:16",
updated_at: "2019-10-04 14:30:16",
children: Illuminate\Database\Eloquent\Collection {#3275
all: [],
},
},
],
}
Как видите, элементы возвращаются как children
, но также как отдельные (повторяющиеся) элементы в списке.
Мой код
Элемент
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Item extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable
= [
'title',
];
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function parent()
{
return $this->belongsTo('App\Item', 'parent_id');
}
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function children()
{
return $this->hasMany('App\Item', 'parent_id');
}
}
Как получить связанные items
:
$user->items()->with('children')->get();