Skip to content

Latest commit

 

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sync Laravel Collection Data

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.

Credits

References

About

Sync Singular and Two Dimension / Associative Laravel Data Collection

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages