【问题标题】:Laravel - Eloquent Self RelationshipLaravel - 雄辩的自我关系
【发布时间】:2023-03-16 01:46:01
【问题描述】:

我的很多模型和其他代码都在这里并且与这个问题有关:
laravel - Query Builder vs. Eloquent

我有这个问题:

        $recipes = Recipe::whereHas('categories', function($q) use ($cat_id) {
        $q->where('category_id', $cat_id);
    })->with('user')->get();  

如果我选择(示例)ID = 5,效果会很好。我得到所有 category_id = 5 的食谱。

如果...
假设 category_id = 5 的父级 ID = 1(主要类别的 ID 为 1-3,所有子级的 ID 为 4 到 x)。

我现在需要,如果有人点击主类别,在这种情况下,ID = 1,我可以获得与主类别相关的所有食谱,包括孩子。所以我从第 1 类和第 5 类(依此类推)中获取所有信息。

我不知道如何设置关系或构建查询。

其次,我也需要将这个功能实现到网站的“高级搜索”方法中,但我认为,如果我能解决这个问题,剩下的就是“容易”。

感谢您的帮助。谢谢!

【问题讨论】:

    标签: php laravel laravel-4 relationship eloquent


    【解决方案1】:

    根据title 和您在问题中描述的详细信息,我认为,您希望使用同一模型的另一个字段/列和id 字段与模型本身建立关系,在这种情况下您可以使用以下方式创建这样的关系:

    class Category extends Eloquent {
    
        public function recipes()
        {
            return $this->hasMany('Category', 'category_id');
        }
    
    }
    

    根据这种关系,如果id1 并且如果category_id 包含@987654331 @ 则id=1category_id=1 之间存在关系。

    几天前我就同一件事写了一篇文章,您可以阅读这篇文章以更好地了解我在说什么:LARAVEL – MODEL RELATIONSHIP TO ITSELF

    【讨论】:

    • 关系已经存在。我有一个 parent_category 和 child_categories 方法,所以这很好。我需要选择所有相关类别,包括我的 sql 语句或 Eloquent / Query 中的主类别。
    • 这正是我已经回答的,id 是父项,category_id 是子项,你看文章了吗?您应该阅读它以了解这个想法,我在类似的事情中使用过它。
    猜你喜欢
    • 2015-03-14
    • 2018-11-28
    • 2015-01-11
    • 2021-06-03
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多