Looking to hire Laravel developers? Try LaraJobs
This package is not available.

laravel-collection-differ maintained by michiruf

Description
Tiny helper to diff collections
Last update
2026/08/24 14:44 (dev-main)
License
Downloads
1 932

Comments
comments powered by Disqus

Laravel Collection Differ

Run Tests

Tiny helper to diff collections.

Installation

composer require michiruf/laravel-collection-differ

Usage

Result usage example:

$result = collect([1, 2, 3])->differ([2, 4])->diff();

dump($result->unmatchedSource); // [1, 3]
dump($result->unmatchedDestination); // [4]
dump($result->matched); // [[2, 2]]

Callbacks usage example:

ProductModel::all()
    ->differ(ProductApi::getAll())
    ->handleUnmatchedSourceUsing(fn (ProductModel $model) => $model->delete())
    ->handleUnmatchedDestinationUsing(fn (ProductDto) $dto => ProductModel::createFromDto($dto))
    ->handleMatchedUsing(fn (ProductModel $model, ProductDto $dto) => $model->updateWithDto($dto))
    ->validateUniqueness() // throw if identifiers are not unique
    ->diff();

Identifier usage example:

ProductModel::all()
    ->differ(ProductApi::getAll())
    ->identifySourceUsing(fn (ProductModel $model) => $model->id)
    ->identifyDestinationUsing('meta.id') // or: fn (ProductDto $dto) => $dto->meta->id
    ->validateUniqueness() // throw if identifiers are not unique
    ->diff();

For additional examples, have at look at the tests.