【发布时间】:2018-05-07 19:06:31
【问题描述】:
有没有办法过滤 Laravel 上数据库查询返回的集合?
返回的集合是这个
1 => Person {#310 ▼
#table: "person"
#attributes: array:15 [▼
"name" => "Jon Doe"
"timeavailable" => "1,2,3,4,5,6,7,8"
2 => Person {#310 ▼
#table: "person"
#attributes: array:15 [▼
"name" => "Jon Moe"
"timeavailable" => "1,2,5,7,8"
在这里,我要过滤timeavailable 属性。我只想显示 1,2,3 的结果。有没有办法过滤这个集合,所以我只能得到这样的东西
1 => Person {#310 ▼
#table: "person"
#attributes: array:15 [▼
"name" => "Jon Doe"
"timeavailable" => "1,2,3"
2 => Person {#310 ▼
#table: "person"
#attributes: array:15 [▼
"name" => "Jon Moe"
"timeavailable" => "1,2"
因此,过滤后的集合将只有 1,2,3 包含。
【问题讨论】:
-
一种方法是在查询中使用
FIND_IN_SETmysql 函数。其次是使用回调来过滤函数,您可以在其中爆炸timeavailable并查看其中的项目是否符合您的条件。第三种方法是改进你的数据库设计,所以Person将有很多TimeAvailable。 -
您是否要从您的集合中删除
Person实例,这些实例的timeavailable字段中没有 1、2 和 3?在此示例中,John Moe将被删除(具有 1 和 2,但没有 3)并且John Doe仍将存在(具有 1、2 和 3)。还是您想实现其他目标?