我根据请求得到了这两个数组:
$f = DocsPf::where('renda', '=', 2)->where('tipo', '=', 'R')->pluck('id');
$f = [4,5,6,7,8,9,10]
还有
$d = Documento::where('user_id', '=', $id)->pluck('cad_doc_id');
[4,5,6,7,8]
现在我只想向模型发出请求,仅了解这些数组之间的差异,例如:
$missing = Docs::where('id', '=', 9)->first();
和
$missing = Docs::where('id', '=', 10)->first();
我已经做到了
$ids = array_diff($f, $d);
return $ids;
...正如下面的兄弟所写,但出现了点击错误:
array_diff(): Expected parameter 1 to be an array, object given
请问有什么帮助吗?
array_diff()
来获取唯一值:
$array1 = [4,5,6,7,8,9,10];
$array2 = [4,5,6,7,8];
$uniqueIds = array_diff($array1, $array2); // `[9, 10]`
$missing = Docs::whereIn("id", $uniqueIds)->get();
// Will return a `Collection` of `Doc` models based on the passed `ids`
-- 编辑 --
如果
$array1
和 $array2
是 Collection
,则可以使用 diff()
功能:
$array1 = collect([4,5,6,7,8,9,10]);
$array2 = collect([4,5,6,7,8]);
$uniqueIds = $array1->diff($array2);
$missing = Docs::whereIn("id", $uniqueIds)->get();
// Note: You may need to do `$uniqueIds->toArray()` if it complains further.
还有一种选择,您可以在使用
$array1
之前将
$array2
和
array_diff()
转换为数组
$uniqueIds = array_diff($array1->toArray(), $array2->toArray());
这有点多余,但应该有助于演示数组和
Collection
之间的区别