模型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/