Вы можете использовать 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
s, вы можете использовать функцию 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