Laravel - Eloquent 自关联

4
很多我的模型和其他代码都在这里,与这个问题有关:
laravel - 查询构建器 vs. Eloquent 我有这个查询:
        $recipes = Recipe::whereHas('categories', function($q) use ($cat_id) {
        $q->where('category_id', $cat_id);
    })->with('user')->get();  

如果我选择(例如)ID = 5,它可以正常工作。我会得到所有类别ID为5的食谱。 那如果...
比方说,类别ID = 5与ID = 1的父级相关联(主要类别的ID为1-3,所有子项为4到x)。
现在我需要实现的是,如果有人点击主要类别,例如ID = 1,我可以获取与主要类别相关的所有食谱,包括子类别。因此,我将获取来自类别1和类别5(以此类推)的所有食谱。
我不知道如何设置关系或构建查询。
其次,我还需要将此功能实现到网站的“高级搜索”方法中,但我认为,如果我能解决这个问题,其他部分就很“容易”了。
感谢您的帮助。谢谢!
1个回答

6

根据你在问题中描述的title和细节,我认为你想使用同一模型的另一个字段/列和id字段来创建与模型本身的关系,在这种情况下,你可以使用以下代码创建这样的关系:

class Category extends Eloquent {

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

}

根据这种关系,您的“categories”表应包含主键“id”和另一个字段作为“category_id”,以建立关系。因此,如果“id”为“1”,并且如果“category_id”包含“1”,则“id = 1”和“category_id = 1”之间存在关系。
我几天前写了一篇关于同样内容的文章,您可以阅读该文章以更好地理解我所说的内容:LARAVEL - 模型与自身的关联

关系已经存在。我有parent_category和child_categories方法,所以这很好。我需要在我的SQL语句或Eloquent / Query中选择所有相关类别,包括主类别。 - Marek123
这正是我回答的,id 是父级,category_id 是子项,你读了那篇文章吗?你应该阅读一下以了解这个概念,我在类似的事情中使用过它。 - The Alpha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接