首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Laravel过滤

用Laravel过滤
EN

Stack Overflow用户
提问于 2017-02-18 13:16:31
回答 1查看 186关注 0票数 0

在我的Laravel项目中,我有以下问题。(为了便于阅读,我已经稍微减少了输出)

  1. 我从一张名叫纽斯波尔斯的桌子上取了所有的帖子。我将其存储为一个名为$all_posts的集合,如下所示:
代码语言:javascript
运行
复制
Collection {#216 ▼
  #items: array:7 [▼
    0 => NewsPost {#227 ▶}
    1 => NewsPost {#228 ▶}
    2 => NewsPost {#229 ▼
      #attributes: array:6 [▼
        "id" => 6
        "title" => "Sample title"
        "body" => "<p>Some html</p>"
        "user_id" => 15
      ]
      #original: array:6 [▶]
      #casts: []
      .
      .
      #guarded: array:1 [▶]
    }
    3 => NewsPost {#230 ▶}
    4 => NewsPost {#231 ▶}
  ]
}
  1. 然后,我从另一个名为user_read的表中获取所有条目,后者包含当前用户已阅读的所有帖子。此表包含对具有“user _id”-列的用户的引用,以及对带有‘post_id’-列的新孢子的引用。我还将其存储在一个集合中,如下所示:
代码语言:javascript
运行
复制
Collection {#219 ▼
  #items: array:2 [▼
    0 => UserRead {#210 ▼
      #attributes: array:4 [▼
        "user_id" => 15
        "post_id" => 6
      ]
      #original: array:4 [▶]
      #casts: []
      .
      .
      #guarded: array:1 [▶]
    }
    1 => UserRead {#217 ▶}
  ]
}
  1. 因此,我现在要做的是获取$ all _ posts -收集并删除$read_post中的所有帖子,并将其存储在一个新的集合中。让我们称它为$unread_posts。我怎样才能做到这一点?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-18 13:36:52

首先获取所有已读取的post id,然后使用filter函数过滤未读的帖子

代码语言:javascript
运行
复制
$readedPosts = $user_read->pluck('post_id');
$unread_posts = $all_posts->filter(function($value) use ($readedPosts) {
      return !in_array($value->id, $readedPosts);  
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42315641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档