我在数据库中有很多行,这些行具有与之链接的类别。尽管类别在一个字段中用逗号作为字符串连接在一起。
例如;name | categoryIDs
------------------
jack | 5,6,9,16
john | 6,8,9,16
mike | 2,5,7,10
brad | 3,5,7,16
我有一个请求,需要基于具有这样数组中类别的请求来过滤所有行;data = [
'maths' => 6,
'science' => 16
]
因此,在这种情况下,必须返回在categoryIDs字段中具有6 和 16的所有行。
我曾考虑使用array_filter,但是我仍然在方法内部使用回调函数或匿名函数感到非常苦恼。
我尝试过,但是我不明白;$data = [
'maths' => 6,
'science' => 16,
];
$rows = $this->getRecords();
$result = array_filter($rows, function ($row) use ($data) {
if (in_array($data, explode(',', $row['categoryIDs']))) {
return true;
}
return false;
});
我没有得到任何结果,该数组保持为空。有人可以解释一下,告诉我如何才能做到最好吗?也欢迎任何其他选择。不幸的是,我坚持每行以字符串形式提供的categoryID。无法以其他任何方式检索它们。但是,如果我可以在过滤之前先操作该字段,那么它也可以正常工作。有什么想法吗?
感谢您的帮助!