composer require umbrellio/php-table-sync
php artisan vendor:publish --tag=config-table-sync
Let's describe the model that needs to be synchronized using an example User.php
...
User extends Model implements SyncableModel
{
use TableSyncable;
...
public function routingKey(): string
{
return 'users';
}
public function getTableSyncableAttributes(): array
{
return [
'id' => $this->external_id,
'login' => $this->name,
'email' => $this->email,
];
}
...
When the model changes, the data will be sent according to the rules of TableSyncObserver
, to get the data you need to run the command table_sync:work
Logging based on the Monolog package and contains some extensions for it.
- specify the logging channel in
config/table_sync.php
...
'log' => [
'channel' => 'table_sync',
],
...
- and describe this channel in
config/logging.php
...
'table_sync' => [
'driver' => 'stack',
'channels' => ['table_sync_daily', 'influxdb'],
],
'table_sync_daily' => [
'driver' => 'daily',
'formatter' => LineTableSyncFormatter::class,
'formatter_with' => [
'format' => '[%datetime%] %message% - %model% %event%',
],
'path' => storage_path('logs/table_sync/daily.log'),
],
'influxdb' => [
'driver' => 'influxdb',
'measurement' => 'table_sync',
],
...
You can use the built-in LineTableSyncFormatter::class
with the available parameters: %datetime%
%message%
%direction%
%model%
%event%
%routing%
%attributes%
%exception%
...
'table_sync' => [
'driver' => 'daily',
],
...
Created by Korben Dallas.