Использование Eloquent для получения данных для дочерних отношений - PullRequest
0 голосов
/ 31 декабря 2018

Я использую Laravel 5.6 и MySQL.У меня есть categories, sub_categories, category_info и services.

A category может иметь 1 или более sub_categories.A category принадлежит к одной категории меню

A sub_category имеет только одну category.

A category имеет 1 category информационную запись.Не имеет значения, будет ли category или sub_category иметь одну запись в таблице category_info.

Моя структура таблицы выглядит следующим образом

Menu_Categories

id
1,
2

Категории

id, parent_category_id, menu_category_id 
1, null, 1
2, null, 1
3, 1, null
4, 1, null

Category_Info

category_id, name 
1, Legal Services 
2, Misc 
3, US Legal Services 
4, Europe Legal Services 

Контроллер

$cats = MenuCategories
        ::with(['categories', 'categories.info', 'categories.sub_categories'])
        ->get();

Меню Категории Модель

public function categories() {
    return $this->hasMany(Categories::class, 'menu_category_id', 'id');
}

Категории Модель

public function menu_categories() {
    return $this->belongsTo(MenuCategories::class, 'menu_category_id');
}

   public function sub_categories() {
    return $this->hasOne(Categories::class, 'parent_category_id');
}

public function info() {
    return $this->hasOne(CategoryInfo::class, 'category_id');
}

Подкатегория Информация Модель

    public function category() {
    return $this->belongsTo(CategoryInfo::class);
}

Мне нужно вернуть категории иинформация о категориях выглядит следующим образом:

{
    Categories: {
        {
            id: 1,
            parent_category_id, null,
            Sub_Categories: {
                {
                    id: 3
                    parent_category_id: 1
                    Category_Info: {
                        {
                            category_id: 3,
                            name: US Legal Services
                        }
                    }
                },
                {
                    id: 4
                    parent_category_id: 1,
                    Category_Info: {
                        {
                            category_id: 4,
                            name: Europe Legal Services
                        }
                    }
                },
            },
            Category_Info: {
                {
                    category_id: 3,
                    name: Legal Services
                }
            }
        },
        {
            id: 2,
            parent_category_id, null,
            Category_Info: {
                {
                    category_id: 3,
                    name: Misc
                }
            }
        },
    }
}

Когда у меня установлены отношения, он возвращает данные неправильно.Он не возвращает Category_Info для sub_categories.

{
    Categories: {
        {
            id: 1,
            parent_category_id, null,
            Sub_Categories: {
                {
                    id: 3
                    parent_category_id: 1
                },
                {
                    id: 4
                    parent_category_id: 1,
                },
            },
            Category_Info: {
                {
                    category_id: 3,
                    name: Legal Services
                }
            }
        },
        {
            id: 2,
            parent_category_id, null,
            Category_Info: {
                {
                    category_id: 3,
                    name: Misc
                }
            }
        },
    }
}

Можно ли вернуть Category_Info для sub_categories?Заранее спасибо.

1 Ответ

0 голосов
/ 01 января 2019

Спасибо Джонасу Штауденмейру за помощь мне

$cats = MenuCategories ::with(['categories', 'categories.info', 'categories.sub_categories', 'categories.sub_categories.info']) ->get();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...