承接 edujugon/tablediff 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

edujugon/tablediff

Composer 安装命令:

composer require edujugon/tablediff

包简介

Comparing DB tables data for Laravel

README 文档

README

Comparing DB tables data for Laravel.

Installation

type in console:

composer require edujugon/tablediff

Register TableDiff service by adding it to the providers array.

'providers' => array(
        ...
        Edujugon\TableDiff\Providers\TableDiffServiceProvider::class
    )

Let's add the Alias facade, add it to the aliases array.

'aliases' => array(
        ...
        'TableDiff' => Edujugon\TableDiff\Facades\TableDiff::class,
    )

Usage samples

Instance the main TableDiff class:

$diff = new \Edujugon\TableDiff\TableDiff();

Add tables to be compared

$diff->tables('base_table', 'merge_table');

Set the pivots

$diff->pivots('base_table_pivot', 'merge_table_pivot');

If the columns have the same name you could do it like follows:

$diff->pivot('pivot_name');

Now, we can run the comparison and get the report

$report = $diff->run()->withReport();

Of course, all those methods can be chained

$report = $diff->tables('base_table','merge_table')
            ->pivot('pivot_name')
            ->run()
            ->withReport();

Notice if you don't use column method, it will look for all columns with same name in both tables.

Merging

The simplest way yo do a merge is like follows

$diff->tables('base_table','merge_table')
    ->pivot('id')
    ->column('column_to_update')
    ->merge();

The above code snippet will update the column_to_update column values from base_table with the column_to_update column values of merge_table in matched ids.

Notice that merge method will update the matched records and also add those records that are new for base table.

Just merging matched records

diff->tables('base_table','merge_table')
    ->pivot('id')
    ->column('column_to_update')
    ->mergeMatched();

Now, let's insert the new records.

diff->tables('base_table','merge_table')
    ->pivot('id')
    ->column('column_to_update')
    ->mergeUnMatched();

merge, mergeMatched and mergeUnMatched methods accept callbacks before doing the merge and just after each update.

Before callback is perfect for casting data like. It takes the data which will be added.

$ddiff->tables('base_table','merge_table')
            ->pivot('id')
            ->column('column_to_update')
            ->merge(null,function(&$data){
                // HERE your code
                $data->column_to_update = (float) $data->column_to_update;
            });

The first callback is call each time the db is updated. It takes the collection to be updated and the data with the new values

$diff->tables('base_table','merge_table')
    ->pivot('id')
    ->column('column_to_update')
    ->merge(function($collection,$data){
        //HERE your code
    });

In case of mergeUnMatched, the first callback takes the new elements to be added and is called for each chunk (By default 10)

$diff->tables('base_table','merge_table')
    ->pivot('id')
    ->column('column_to_update')
    ->mergeUnMatched(function($list){
        //HERE your code
    });

Event

Once the merge is done the package fires an event call Edujugon\TableDiff\Events\MergeDone with some useful parameters

Parameters:

  • Merge type
  • Report
  • Extra payload

Extra payload can be anything you want to add the the event

$diff->eventPayload(['user' => 'John Doe']);

Kepp in mind that eventPayload method have to be called before calling merge method.

That is perfect when need to do some actions after merging like store it in db, send notification, etc..

统计信息

  • 总下载量: 177
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-06-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固