I have three tables and after each table is the defined eloquent relationship of each entity.
categories
| id | name |
|---|---|
| 1 | cars |
| 2 | bikes |
public function items()
{
return $this->belongsToMany(AccountItem::class, "category_item", "category_id", "item_id");
}
category_items
| id | category_id | item_id |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
items
| id | name |
|---|---|
| 1 | volks |
| 2 | bmw |
public function categories()
{
return $this->belongsToMany(Category::class, "category_items", "item_id", "category_id");
}
I am stuck on how to get a function that will return an array of the data with each category and the corresponding items. Incase the category has null items it returns a empty array of the category.
CodePudding user response:
I assume your relationship is correct. If so, you can do this to load.
$categories = Category::with('items')->get();
foreach ($categories as $category) {
$categoryArray = [
'id' => $category->id,
'name' => $category->name,
'items' => $category->items->toArray()
];
}
