我有一个文章集,就像这样(为了清楚起见,查询被简化了):
$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,例如:
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}
]}
这当然破坏了我网站其他部分的功能。我想获取该确切的集合,但没有空条目。
解决这个问题最无痛的方法是什么?
答案 0 :(得分:0)
我将通过使用filter()方法而不是map()来解决这个问题。这样,您将只返回符合true / false条件的当前项目,而不返回空值
$filtered_articles = $articles->filter(function ($current, $key) use ($a)
{
return ($current->id != $a->id);
});
答案 1 :(得分:-1)
尝试这种简单的方法,在查询级别获取所有需要的文章。
获取除id
以外的所有文章:
$articles = Article::where('id', '!=', $id)->get();
$a = Article::find($id);