Я пытаюсь загрузить один атрибут, который объединен в группу, и другую таблицу с дополнительно связанной сводной точкой. Вот таблицы:
Categories
--------------------
id
Attributes
--------------------
id
attribute_set_id
Attribute_Groups
----------------------------
id
Categories_Attribute_Groups
-----------------------------
category_id
attribute_group_id
Categories_Additional_Attributes
-----------------------------
category_id
attribute_id
Class Category extends eloquent
{
// how to achieve this
public function attributes()
{
// all attributes that can be eager load
}
}
Как я могу получить все атрибуты в модели категории с возможностью их загрузки?






В модели категорий вы можете определить 2 отношения как belongsToMany с атрибутом и группой атрибутов
Class Category extends eloquent
{
public function attributes()
{
return $this->belongsToMany(Attribute::class, 'Categories_Additional_Attributes', 'category_id');
}
public function attribute_groups()
{
return $this->belongsToMany(AttributeGroups::class, 'Categories_Attribute_Groups', 'category_id');
}
}
Теперь вы можете жаждать их как
Category::with(['attributes', 'attribute_groups'])->get();
Для двунаправленного отображения вы можете определить их как
Class Attribute extends eloquent
{
public function categories()
{
return $this->belongsToMany(Category::class, 'Categories_Additional_Attributes', 'attribute_id');
}
}
Class AttributeGroups extends eloquent
{
public function categories()
{
return $this->belongsToMany(Category::class, 'Categories_Attribute_Groups', 'attribute_group_id');
}
}
Мне нужны все атрибуты, а не только группа и дополнительные
@AlirezaMirsepassi см. Часть with(...), у вас будут все атрибуты, связанные с этой конкретной категорией
Будьте осторожны при использовании
attributes; вы можете видеть, что#attributes: array: ... [▶]доступен для всех моделей без определения отношения, поэтому попытка доступа к нему может вызвать проблемы.