【问题标题】:Laravel eloquent model collectionLaravel 雄辩模型合集
【发布时间】: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


【解决方案1】:

我认为,如果通过将子 cmets 放在与父 cmets 不同的表中进一步规范化数据库,则最好使用单个数据库查询来完成您正在做的事情。

也就是说,如果这不是一个选项, 1st - 获取数组中的所有活动父 cmets, 第二 - 获取数组中的所有活动子 cmets。 第 3 次 - 循环选择具有匹配的活动父评论的活动子 cmets。

【讨论】:

    猜你喜欢
    • 2015-03-04
    • 2021-08-11
    • 2017-06-07
    • 1970-01-01
    • 2013-05-10
    • 2019-02-12
    • 2013-06-04
    • 2016-11-26
    • 1970-01-01
    相关资源
    最近更新 更多