【问题标题】:Using Eloquent relationship to retrieve data for child relationship使用 Eloquent 关系检索子关系的数据
【发布时间】:2019-01-01 05:08:14
【问题描述】:

我正在使用 Laravel 5.6 和 MySQL。我有categoriessub_categoriescategory_infoservices

category 可以有 1 个或多个 sub_categoriescategory 属于一个菜单类别

sub_category 只有一个 category

category 有 1 个 category 信息记录。不管它是category 还是sub_category,都会在 category_info 表中有一条记录。

我的表结构如下

菜单_类别

id
1,
2

分类

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

类别信息

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
                }
            }
        },
    }
}

通过我建立关系的方式,它返回的数据不正确。它没有返回 sub_categories 的 Category_Info。

{
    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
                }
            }
        },
    }
}

是否也可以为 sub_categories 返回 Category_Info ?提前致谢。

【问题讨论】:

  • 'categories.sub_categories.info'?
  • 成功了,谢谢!

标签: laravel laravel-5 eloquent


【解决方案1】:

感谢 Jonas Staudenmeir 帮助我

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

【讨论】:

    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 2013-09-28
    • 2019-12-11
    • 2022-07-27
    • 2019-08-24
    • 2022-10-09
    • 2021-01-10
    • 1970-01-01
    相关资源
    最近更新 更多