Насколько я знаю, поскольку элементы вашей коллекции - это массив, нет простого простого способа Laravel, и вы должны написать функцию для их сравнения:
Итак, предполагая, что вы иметь:
$collection1 = collectt([
['id' => 1, 'name'=> 'phone', 'quantity' => 1, 'price' => 1200],
['id' => 2, 'name'=> 'tv', 'quantity' => 3, 'price' => 800],
]);
$collection2 = collect([
['id' => 1, 'name'=> 'phone', 'quantity' => 1, 'price' => 1200],
['id' => 2, 'name'=> 'tv', 'quantity' => 3, 'price' => 400],
]);
Вы можете, например, сравнить их по:
private function collectionsAreEqual($collection1, $collection2)
{
if ($collection1->count() != $collection2->count()) {
return false;
}
//assuming that, from each id, you don't have more that one item:
$collection2 = $collection2->keyBy('id');
foreach ($collection1->keyBy('id') as $id => $item) {
if (!isset($collection2[$id])) {
return false;
}
//your items in the collection are key value arrays
// and can compare them with == operator
if ($collection2[$id] != $item) {
return false;
}
}
return true;
}
dd(collectionsAreEqual($collection1, $collection2));