【发布时间】:2015-08-15 08:24:04
【问题描述】:
我正在为 laravel 开发一个评论系统,并试图找到一种方法来用 eloquent 从数据库中检索正确的结果。
表的架构是这样的。每条评论都有评论状态(启用、禁用),每条评论都可能有子 cmets。子 cmets 与父 cmets 有关系,并且都属于同一个表。我想检索所有启用状态的 cmets,我的代码如下:
public function comments()
{
return $this->morphMany('Models\Eloquent\Comment', 'commentable')
->where('status', '=', 'enabled')
->get()
}
上面的问题是,在返回的集合中,我得到了所有启用状态的对象。相反,我不想包含已启用但其父评论已禁用的 cmets。
示例:
- 父评论:禁用
- --子评论:启用
- --子评论:启用
- 父评论:启用
- --子评论:启用
- --子评论:启用
- --子评论:禁用
在上面我只想得到一个包含启用的父评论的集合,它是启用的两个子 cmets
【问题讨论】:
-
不要在关系声明中调用
get()。 -
确定但不能解决问题
-
没想到能完全解决你的问题。这就是为什么它只是一个评论而不是一个答案;)
标签: laravel collections model comments eloquent