首页 > 解决方案 > 如何从集合中删除模型实例

问题描述

我有一个文章集合,就像这样(为了清楚起见,简化了查询):

$articles = Article::all();

我有一篇文章:

$a = Article::find($id);

如何从 $articles 中删除 $a?请注意,$a 应该始终存在于 $articles 中。

我试过了:

$filtered_articles = $articles->map(function ($current, $key) use ($a)
{
  if ($current->id != $a->id) {
    return $current;
  }
});

但是,这会在 $a 以前的位置返回一个带有“null”的集合,例如:

Collection {#220
  #items: array:8 [
  0 => Article {#243}
  1 => null
  2 => Article {#245}
  3 => Article {#246}
  4 => Article {#247}
  5 => Article {#248}
  6 => Article {#249}
  7 => Article {#250}
]}

当然,这会破坏我网站其他部分的功能。我想得到那个确切的集合,但没有空条目。
处理这个问题最轻松的方法是什么?

标签: phplaravellaravel-5

解决方案


我会通过使用 filter() 方法而不是 map() 来解决这个问题。这样,您将只返回满足真/假条件的当前项目,而不是空值

$filtered_articles = $articles->filter(function ($current, $key) use ($a)
{
   return ($current->id != $a->id);
});

推荐阅读