2017 © Pedro Peláez
 

cakephp-plugin cakephp-duplicatable

CakePHP ORM plugin for duplicating entities (including related entities)

image

riesenia/cakephp-duplicatable

CakePHP ORM plugin for duplicating entities (including related entities)

  • Wednesday, July 11, 2018
  • by riesenia
  • Repository
  • 9 Watchers
  • 29 Stars
  • 22,031 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 12 Forks
  • 1 Open issues
  • 20 Versions
  • 38 % Grown

The README.md

Duplicatable behavior for CakePHP

CI Coverage Status Latest Version Total Downloads Software License, (*1)

This plugin contains a behavior that handles duplicating entities including related data., (*2)

Installation

Using composer, (*3)

composer require riesenia/cakephp-duplicatable

Load plugin using, (*4)

bin/cake plugin load Duplicatable

Usage

This behavior provides multiple methods for your Table objects., (*5)

Method duplicate

This behavior provides a duplicate method for the table. It takes the primary key of the record to duplicate as its only argument. Using this method will clone the record defined by the primary key provided as well as all related records as defined in the configuration., (*6)

Method duplicateEntity

This behavior provides a duplicateEntity method for the table. It mainly acts as the duplicate method except it does not save the duplicated record but returns the Entity to be saved instead. This is useful if you need to manipulate the Entity before saving it., (*7)

Configuration options:

  • finder - finder to use to get entities. Set it to "translations" to fetch and duplicate translations, too. Defaults to "all". It is possible to set an array for more finders.
  • contain - set related entities that will be duplicated
  • remove - fields that will be removed from the entity
  • set - fields that will be set to provide value or callable to modify the value. If you provide a callable, it will take the entity being cloned as the only argument
  • prepend - fields that will have value prepended by the provided text
  • append - fields that will have value appended by provided text
  • saveOptions - options for save on primary table
  • preserveJoinData - if _joinData property in BelongsToMany relations should be preserved - defaults to false due to tricky nature of this association

Examples

class InvoicesTable extends Table
{
    public function initialize(array $config): void
    {
        parent::initialize($config);

        // add Duplicatable behavior
        $this->addBehavior('Duplicatable.Duplicatable', [
            // table finder
            'finder' => 'all',
            // duplicate also items and their properties
            'contain' => ['InvoiceItems.InvoiceItemProperties'],
            // remove created field from both invoice and items
            'remove' => ['created', 'invoice_items.created'],
            // mark invoice as copied
            'set' => [
                'name' => function($entity) {
                    return md5($entity->name) . ' ' . $entity->name;
                },
                'copied' => true
            ],
            // prepend properties name
            'prepend' => ['invoice_items.invoice_items_properties.name' => 'NEW '],
            // append copy to the name
            'append' => ['name' => ' - copy']
        ]);

        // associations (InvoiceItems table hasMany InvoiceItemProperties)
        $this->hasMany('InvoiceItems', [
            'foreignKey' => 'invoice_id',
            'className' => 'InvoiceItems'
        ]);
    }
}

// ... somewhere in the controller
$this->Invoices->duplicate(4);

Sometimes you need to access the original entity, e.g. for setting an ancestor/parent id reference. In this case you can leverage the $original entity being passed in as 2nd argument:, (*8)

'set' => [
    'ancestor_id' => function ($entity, $original) {
        return $original->id;
    },
],

The Versions

11/07 2018

dev-master

9999999-dev

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

11/07 2018

v3.1.1

3.1.1.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

01/05 2018

v3.1.0

3.1.0.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

01/05 2018

dev-cakephp3.6

dev-cakephp3.6

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

29/12 2017

v3.0.7

3.0.7.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

05/12 2017

v3.0.6

3.0.6.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

21/06 2017

v3.0.5

3.0.5.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

12/06 2017

v3.0.4

3.0.4.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

09/03 2017

v3.0.3

3.0.3.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

07/03 2017

v3.0.2

3.0.2.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

10/02 2017

v3.0.1

3.0.1.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

27/12 2016

v3.0.0

3.0.0.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

22/12 2016

v2.0.0

2.0.0.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

20/12 2016

v1.0.6

1.0.6.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

10/11 2016

v1.0.5

1.0.5.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

07/10 2016

v1.0.4

1.0.4.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

15/06 2016

v1.0.3

1.0.3.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

21/01 2016

v1.0.2

1.0.2.0

CakePHP ORM plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

orm cakephp copy duplicate

08/11 2015

v1.0.1

1.0.1.0

CakePHP plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy

06/11 2015

v1.0.0

1.0.0.0

CakePHP plugin for duplicating entities (including related entities)

  Sources   Download

MIT

The Requires

 

The Development Requires

by Tomas Saghy