Есть код:
// Dishe.php
public function sizes()
{
return $this->belongsTo(DisheSize::class);
}
// DisheSize.php
public function modifierGroups()
{
return $this->belongsToMany(ModifierGroup::class, 'dishe_size_modifier_groups')->withPivot('required', 'multiple');
}
public function modifiers()
{
return $this->belongsToMany(Modifier::class, 'dishe_size_modifiers')
->withPivot('required', 'min_quantity', 'max_quantity', 'free_quantity', 'default_quantity');
}
// Modifier.php
public function disheSizes()
{
return $this->belongsToMany(DisheSize::class, 'dishe_size_modifiers');
}
// ModifierGroup.php
public function modifiers(): HasMany
{
return $this->hasMany(Modifier::class);
}
// DisheController.php
public function show(Project $project, Menu $menu, Dishe $dishe)
{
$dishe = $dishe->load(['sizes.modifierGroups.modifiers' => function ($query) use ($dishe) {
$query->whereHas('disheSizes', function ($query) use ($dishe) {
$query->where('dishe_id', $dishe->id);
});
}]);
return response()->json([
'data' => $dishe,
], 200);
}
Возвращает такую структуру:
{
"data": {
"id": 289,
"sizes": [
{
"id": 59,
"external_uuid": null,
"dishe_id": 289,
"name": "Основной размер",
"price": 12000,
"modifier_groups": [
{
"id": 1,
"project_id": 1,
"name": "Опции",
"pivot": {
"dishe_size_id": 59,
"modifier_group_id": 1,
"required": 1,
"multiple": 0
},
"modifiers": [
{
"id": 1,
"project_id": 1,
"modifier_group_id": 1,
"name": "Добавить соль",
}
]
}
]
},
{
"id": 60,
"dishe_id": 289,
"name": "Zeasd",
"price": 12,
"modifier_groups": []
}
]
}
}
Как можно вернуть данные из связанной между размером и модификатором таблицы dishe_size_modifier? (в modifiers вернуть pivot данные)