CustomerDocuments
保存着客户文档,doc_id
是此模型中的一列,表示其中有哪个文档。$neededDocs = [1,2,3]
。如何检查我的收藏集CustomerDocuments
在该收藏集中的每个项目中是否包含$neededDocs
。
如果所有$neededDocs
都存在于每个CustomerDocuments.doc_id中,则返回true,否则返回false。
我想使用collection->进行以下操作:
CustomersDocuments::where('customer_id', $customer->id)
->contains('doc_id',$required_onboarding_docs)
->get();
但是这种语法是错误的
答案 0 :(得分:1)
我认为您可能可以通过以下方式实现此目标:
$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);
});
我不确定您想要哪一个,但是这些应该可以解决。