فرض کنید در وب اپلیکیشن خود چندین دیتابیس داریم و در بعضی از دیتابیس های پروژه ، کپی دیتای دیگر دیتابیس ها یا کپی یک Model خاص همراه با relation های آن را نگه می داریم .
پکیج bkwld/cloner​ در لاراول این امکان را به برنامه نویس میدهد تا بتواند از مدل های Laravel Eloquent و همچنین relationship های آن یک Clone تهیه کند و اطلاعات آن Model را مستقیما در دیتابیس جاری یا حتی در دیگر دیتابیس ها کپی نماید .
برای شروع باید پکیج bkwld/cloner  با استفاده از کامپوزر دانلود شود .
composer require bkwld/cloner​

بعد از دانلود پکیج ، ServicePrivder آن را به کانفیگ پروژه در دایرکتوری config\app.php در قسمت providers اضافه می کنیم :
Bkwld\Cloner\ServiceProvider::class,​


حال Modelهایی که می خواهند Clone شوند باید از trait زیر استفاده کنند ، فرض کنید یک Model به نام Article داریم که میخواهیم آن را Clone کنیم :

class Article extends Eloquent {
	use \Bkwld\Cloner\Cloneable;
}


برای duplicate کردن اطلاعات Article در دیتابیس جاری می توان به صورت زیر عمل کرد .

$clone = Article::first()->duplicate();


برای کپی کردن اطلاعات Model در دیگر دیتابیس ها میتوان از شیوه زیر استفاده کرد ، به عنوان مثال می خواهیم Article با آی دی 20 را در دیتابیس backup ، کپی نماییم :

$clone = Article::find(20)->duplicateTo('backup');


فرض کنید Article دارای چندین relation است و میخواهیم دیتای relation های آن را هم clone کنیم ، به عنوان مثال Article دارای یک relation با Comment است و میخواهیم هنگام clone کردن Article ، کامنت های آن را هم clone کنیم :

class Article extends Eloquent
{
    use \Bkwld\Cloner\Cloneable;
 
    protected $cloneable_relations = ['comments'];

    public function comments() {
        return $this->hasMany(Comment::class);
    }
}


حال بعد از هر بار duplicate کردن ، دیتای relation ها نیز clone می شوند .

اگر بعضی از فیلدها را در Model های خود به صورت unique تعریف کرده باشید و نخواهید آن ها را کپی کنید ، میتوانید از کد زیر استفاده کنید ، اگر چه این پکیج به صورت پیش فرض id را کپی نمی کند و آن ها را با استفاده از  auto-incremente پر میکند ، updated_at و created_at نیز copy نمی شوند .

class Article extends Eloquent
{
    use \Bkwld\Cloner\Cloneable;

    protected $clone_exempt_attributes = ['slug'];
}