Eloquent: how to make a copy of a row

Today I want to tell you about one "hidden" Laravel feature which is in the system but not in documentation - replicate. This function allows you to make a copy of a row in the fastest way possible. To start with, we are going to have a table:
Schema::create('tasks', function (Blueprint $table) {
    $table->increments('id');
    $table->string('task');
    $table->text('description');
    $table->timestamps();
    $table->softDeletes();
});
And a model:
class Tasks extends Model
{
    use SoftDeletes;
    protected $table = 'tasks';
    protected $fillable = ['task', 'description'];
}
In the database we have a task which looks like this: ReplicateDatabaseSingle And then we run the following code to duplicate a single row:
$tasks = Tasks::find(1);
$newTask = $tasks->replicate();
$newTask->save();
We should see that our database row was replicated with new id and updated timestamps: ReplicateDatabaseMulti And that's it! With a few lines of code you can replicate a lot of data. This method works with loops too, so you can use this method to duplicate all of our entries.

No comments or questions yet...

Like our articles?

Become a Premium Member for $129/year or $29/month

Written by