rembon / sync-collection
Sync Between Old and New Laravel Data Collection
This package is auto-updated.
Last update: 2024-11-30 02:29:28 UTC
README
Sebuah Package untuk Sinkronisasi Data Collection.
Features
- Sync Untuk Dua Data Collection (Singular)
- Sync Untuk Dua Data Collection (Dua Dimensi / Asosiatif)
Installation
Installasi Via Composer
composer require rembon/sync-collection
Buka file Config/app.php, Lalu Pastekan syntax berikut pada bagian Autoload Service Providers
'providers' => ServiceProvider::defaultProviders()->merge([ ... Rembon\SyncCollection\SyncCollectionServiceProvider::class, ... ])->toArray(),
How to Use
Pastikan anda mengimport kedua class berikut
use Rembon\SyncCollection\Services\BuildCollection; use Rembon\SyncCollection\SyncCollection;
Build Collection Services
Dipakai untuk manipulasi Collection dengan menggunakan nilai daripada Collection itu sendiri
BuildCollection::set(Collection $collection, Builder $callback)
Sync Singular Data Collection
Dipakai untuk Sinkronisasi Kedua Collection yang singular
SyncCollection::withSingleBetween(Collection $old_collection, Collection $new_collection, array $unique_key_to_protect);
Sync Associative Data Collection
Dipakai untuk Sinkronisasi Kedua Collection yang associative
SyncCollection::withAssociativeBetween(Collection $old_collection, Collection $new_collection, string $unique_key);
Examples
Berikut adalah contoh penggunaan kasusnya.
Build Collection Services
Untuk Build Collection dapat digunakan untuk penggunaan Advance, Berikut adalah Contoh Sederhana untuk proses mapping data Collection
BuildCollection::set($oldData, function ($item) { return $item->map(function ($val, $key) { return $val['quantity'] > 20; }); })
Akan Menghasilkan Hasil Seperti berikut Ini:
[ 0 => false, 1 => false, 2 => true ]
Sync Singular Data Collection
Sinkronisasi Untuk Singular Data Collection
// Data Lama Singular $old_data = collect([ 'id' => 1, 'name' => 'item 1', 'quantity' => 10, ]); // Data Baru Singular $new_data = collect([ 'name' => 'New Item 1', 'quantity' => 100, ]); return SyncCollection::withSingleBetween($old_data, $new_data, ['id']);
Akan menghasilkan data seperti berikut ini:
[ "id" => 1, "name" => "New Item 1", "quantity" => 100 ]
Sync Associative Data Collection
Sinkronisasi Untuk Associative Data Collection
// Data lama $oldData = collect([ ['id' => 1, 'name' => 'Item 1', 'quantity' => 10], ['id' => 2, 'name' => 'Item 2', 'quantity' => 20], ['id' => 3, 'name' => 'Item 3', 'quantity' => 30], ]); // Data baru $newData = collect([ ['id' => 1, 'name' => 'New Item', 'quantity' => 15], ['name' => 'Another New Item', 'quantity' => 25], ['name' => 'Another New Items 2', 'quantity' => 250], ]); return SyncCollection::withAssociativeBetween($oldData, $newData, 'id');
Berikut Adalah hasil daripada Sinkronisasi Associative Data Collection:
[ "currents" => [ [ "id" => 2, "name" => "Item 2", "quantity" => 20 ], [ "id" => 3, "name" => "Item 3", "quantity" => 30 ] ], "appends" => [ [ "name" => "Another New Item", "quantity" => 25 ], [ "name" => "Another New Items 2", "quantity" => 250 ] ], "olds" => [ [ "id" => 1, "name" => "Item 1", "quantity" => 10 ] ], "updated" => [ [ "id" => 1 "name" => "New Item" "quantity" => 15 ] ] ]
Notes
currents
data yang tidak ada perubahan baik sebelum atau sesudah ada request.appends
data baru yang tidak ada dalam data sebelumnya.olds
data lama yang sudah tidak terpakai.updated
data baru yang menggantikan data lama yang sudah tidak terpakai.