php - 如何从集合中删除模型实例
问题描述
我有一个文章集合,就像这样(为了清楚起见,简化了查询):
$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}
]}
当然,这会破坏我网站其他部分的功能。我想得到那个确切的集合,但没有空条目。
处理这个问题最轻松的方法是什么?
解决方案
我会通过使用 filter() 方法而不是 map() 来解决这个问题。这样,您将只返回满足真/假条件的当前项目,而不是空值
$filtered_articles = $articles->filter(function ($current, $key) use ($a)
{
return ($current->id != $a->id);
});
推荐阅读
- ios - 有没有办法以编程方式从 ios 应用商店下载应用程序
- python - 稀疏输入的 KNeighborsClassifier 中使用的算法?
- android - 如何仅更新 Android 中现有 Json 对象中对象的非空 Json 字段
- php - 如何在 WebApp(PHP、Google API)中使用 Google Drive Files
- mysql - 如何根据通过的标准在一行中自行加入表并显示有限数量的结果
- mysql - 如何恢复MYSQL数据库,一旦你丢失了最新的frm文件但你有最新的ib文件
- reactjs - 在没有 Redux 的情况下组合 Reducer
- encryption - 我如何验证消息的签名?
- arduino - 无逆时针旋转
- bash - ctrl+c 不等待子进程(后台进程)以陷阱完成