У меня есть следующие отношения между MenuItem
и Category
:
Модель элемента меню
public function category()
{
return $this->belongsTo('App\Models\Category');
}
public function getCategoryNameAttribute()
{
return $this->attributes['category_name'] = $this->category->name;
}
Категория Модель
public function menuItems()
{
return $this->hasMany('App\Models\MenuItem');
}
Теперь с моего контроллера при возврате списка всех пунктов меню я хочу вернуть category_name
вместе с результатами. Как вы заметили в приведенном выше коде, я создал аксессуар getCategoryNameAttribute
для получения имени.
Метод, который возвращает список всех пунктов меню в моем контроллере:
public function index()
{
$menuItems = $this->menuItem->all();
foreach ($menuItems as $menuItem) {
$menuItem['category_name'] = $menuItem->category_name;
}
return $menuItems;
}
Если Я делаю dd($menuItems);
сразу после $menuItems = $this->menuItem->all();
, получаю:
[
"id" => 1
"name" => "Hailee Ondricka"
"category_id" => 1
"side" => 0
"side_only" => 0
"description" => "Amet delectus exercitationem neque tenetur aliquam. Et repudiandae nam nam voluptates laboriosam autem. Natus quo quia ea. Explicabo reprehenderit consequatur quia aliquam incidunt."
"image" => "https://lorempixel.com/640/480/?39201"
"available" => 0
"active" => 0
"created_at" => "2020-06-21 00:41:02"
"updated_at" => "2020-06-21 00:41:02"
]
, но после foreach, в котором я добавляю category_name
, получаю:
"id" => 1
"name" => "Krista Donnelly"
"category_id" => 1
"side" => false
"side_only" => false
"description" => "Sapiente est maiores non voluptatum odio placeat. Cum enim aut odit autem aut autem. Quasi excepturi omnis laborum aut officia tempora accusamus."
"image" => "https://lorempixel.com/640/480/?96389"
"available" => true
"active" => false
"created_at" => "2020-06-21 00:42:49"
"updated_at" => "2020-06-21 00:42:49"
"category_name" => "Dr. Christelle Purdy MD"
"category" => array:4 [
"id" => 1
"name" => "Dr. Christelle Purdy MD"
"created_at" => "2020-06-21 00:42:49"
"updated_at" => "2020-06-21 00:42:49"
]
]
As вы можете видеть в результате, я получаю category_name
, но я также получаю весь объект category
, связанный с этой категорией, почему это так? как предотвратить возврат всего объекта?