@lexstile

Как вернуть корректно данные из связанной таблицы?

Есть код:
// 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 данные)
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы