بسم الله الرحمن الرحيم

فى بعض الأحيان نحتاج الى تكرار صف فى قاعدة البيانات و أجراء تعديلات بسيطة عليه.

مثال : لو أنك تعمل على سيستم TODO List فسيكون لديك جدول جدول أسمه Tasks، نفترض انك تريد تكرار مهمه معينه قد أنتهيت منها و لكن تريد ان تكررها و تكون " غير منتهية "، فى السابق كنا نعيد كتابة الصف من جديد بالكامل، تكون هذه العملية سهله لو كانت المعلومات الموجوده بسيطة لكن لو الصف به الكتير من المعلومات يكون الأمر مرهقا و قابل للخطأ.

هنا جاءت Laravel و معها Eloquent بحل خفى و غير موجود فى Documentation على ما أعتقد و هى داله أسمها Replicate

لشرح المثال بالكود :

دا هيكون شكل ال Migration ا تبع الجدول المهام

Schema::create('tasks', function (Blueprint $table) {     $table->increments('id');     $table->string('task');     $table->text('description');     $table->boolean('done');     $table->timestamps();  });

ودا هيكون شكل ال Model

namespace App\Models  class Tasks extends Model {     protected $table = 'tasks';     protected $fillable = ['task', 'description' , 'done']; }  نفترض ان لدينا controller أسمه TaskController   namespace App\Http\Controllers;  use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Task;  classTaskController extends Controller {   public function copyTask(Request $request))   {         $task = Task::find($request->get('id'))         $newTask = $task->replicate();         $newTask->done = 0 ;         $newTask->save();   }  }

فى الأعلى قمنا بعمل صف جديد بنفس بيانات الصف الجديد  لكن غيرنا قيمه العمود done الى 0 ليصبح غير منفذ، تقوم Eloquent مباشرة بتغير قيم الأعمدة ( created_at - updated_at )

يمكن أيضا التعامل مع العلاقات  Relations الخاصه بالصف الجديد و نقلها للجديد.

المرجع : https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Model.html