Laravel - 雄辩的自我关系
Posted
技术标签:
【中文标题】Laravel - 雄辩的自我关系【英文标题】:Laravel - Eloquent Self Relationship 【发布时间】:2014-05-14 12:02:40 【问题描述】:我的很多模型和其他代码都在这里并且与这个问题有关: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 类(依此类推)中获取所有信息。
我不知道如何设置关系或构建查询。
其次,我也需要将这个功能实现到网站的“高级搜索”方法中,但我认为,如果我能解决这个问题,剩下的就是“容易”。
感谢您的帮助。谢谢!
【问题讨论】:
【参考方案1】:根据title
和您在问题中描述的详细信息,我认为,您希望使用同一模型的另一个字段/列和id
字段与模型本身建立关系,在这种情况下您可以使用以下方式创建这样的关系:
class Category extends Eloquent
public function recipes()
return $this->hasMany('Category', 'category_id');
根据这种关系,如果id
是1
并且如果category_id
包含@987654331 @ 则id=1
和category_id=1
之间存在关系。
几天前我就同一件事写了一篇文章,您可以阅读这篇文章以更好地了解我在说什么:LARAVEL – MODEL RELATIONSHIP TO ITSELF。
【讨论】:
关系已经存在。我有一个 parent_category 和 child_categories 方法,所以这很好。我需要选择所有相关类别,包括我的 sql 语句或 Eloquent / Query 中的主类别。 这正是我已经回答的,id
是父项,category_id
是子项,你看文章了吗?您应该阅读它以了解这个想法,我在类似的事情中使用过它。以上是关于Laravel - 雄辩的自我关系的主要内容,如果未能解决你的问题,请参考以下文章