进行查询后,如何通过 Collection 中的 where 子句获取选择的模型

Posted

技术标签:

【中文标题】进行查询后,如何通过 Collection 中的 where 子句获取选择的模型【英文标题】:How can I obtain a chosen Model by the where clause from Collection after the query has been proceeded 【发布时间】:2016-01-04 04:30:59 【问题描述】:

得到集合后,我们可以通过以下方式进行搜索:

$categories->where('name', $name)

这很简单,但是如果我们有一个多级类别系统,并且我们想通过给定名称找到一个模型并且我们知道该模型存在于某个地方,但我们不确定它是第一级还是更深层次。

我尝试

$categories->where('name', $name)->orHas('children', function() (...))

但这只能在 Builder 中使用,不能在集合中使用。 所以问题是,如何通过给定的键和字段从父子集合中检索模型,而无需再次查询数据库。

当然是 Laravel。

【问题讨论】:

【参考方案1】:

使用集合的filter 方法:

$filtered = $categories->filter(function ($category) use ($name) 
    return $category->name == $name || $category->children->contains('name', $name);
);

【讨论】:

太好了,谢谢 - 这就是我想要的!但是,我得到了父模型,但是当我们已经知道名字时,去它的关系并抓住一个孩子并不是什么大不了的事。不知何故,我错过了这种方法。再次感谢。

以上是关于进行查询后,如何通过 Collection 中的 where 子句获取选择的模型的主要内容,如果未能解决你的问题,请参考以下文章

mongodb 命令行用啥命令查询Collection文档结构

MongoDB 查看慢查询级别及慢查询日志

如何优化 pymongo 中的更新查询以进行抓取项目

MongoDB入门实战教程

MyBatis关联查询,一对多关联查询

mybatis使用collection查询集合属性规则