模型CustomerDocuments保存客户文档,doc_id是此模型中的一列,表示其中存在哪个文档。
我有一组所需的文档ID,例如$neededDocs = [1,2,3]


如何检查我的收藏夹CustomerDocuments在此收藏夹的每个项目中是否包含$neededDocs

如果所有$neededDocs都存在于每个CustomerDocuments.doc_id中,则返回true,否则返回false。

我想使用collection-> contains来执行此操作,如下所示:

CustomersDocuments::where('customer_id', $customer->id)
    ->contains('doc_id',$required_onboarding_docs)
    ->get();


但是这种语法是错误的

最佳答案

我认为您可能可以通过以下方式实现此目的:

$documents = CustomersDocuments::where('customer_id', $customer->id)
    ->get()
    ->pluck('doc_id')
    ->toArray();


上面将输出带有所有doc_id的数组。

return $documents == $neededDocs;


然后,您可以将其与您的$neededDocs数组进行比较。

编辑:但是,如果您想检查集合中的每一行是否包含doc_id中出现的$neededDocs,则可以这样进行:

$collection = CustomersDocuments::where('customer_id', $customer->id)->get();

return $collection->contains(function($value, $key) use ($neededDocs) {
    return in_array($value->doc_id, $neededDocs);
});


我不确定您要哪个,但是这些应该可以解决。

关于laravel - 如何检查集合的列是否与数组匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54294515/

10-11 04:54