2015-12-13 4 views
6

Wie kann ich einfach eine Datenbankzeile kopieren und erneut einfügen, aber mit einem anderen Wert für 1 Feld?Laravel Kopieren von Datensätzen und Duplizieren mit neuen Werten

zum Beispiel: bekommen ----> taks_name, project_id Ich möchte die Aufgabe kopieren, und fügen Sie ihn mit einem neuen project_id

+1

Die 'replicate()' Eloquent Methode ist, was Sie lo sind oking für. –

Antwort

1

Sie können replicate() verwenden und dann die Zeile aktualisieren:

Model::find(1)->replicate()->save(); 

$model = Model::find(1); 
$model->project_id = $new_project_id; 
$model->save(); 
16

Sie könnten die replicate Methode des Modells wie folgt verwenden:

// Retrieve the first task 
$task = Task::first(); 

$newTask = $task->replicate(); 
$newTask->project_id = 16; // the new project_id 
$newTask->save(); 
7

Sieverwenden könnteMethode. Dadurch wird ein neues Objekt mit denselben Werten außer dem Primärschlüssel und den Zeitstempeln erstellt. Danach können Sie Ihr Modell speichern:

$task = Task::find(1); 
$new = $task->replicate(); 

Wenn Sie möchten, eine Eigenschaft ändern könnte

$new->project = $otherProject; 

und dann

$new->save(); 

, wenn Sie die neue ID wollen, einfach:

$newID = $new->id; 
+0

Es ist nicht notwendig, 'id' auf 'null' oder den 'created_at' Zeitstempel zu setzen, da dieser Zeitstempel beim Speichern gesetzt wird. –

+0

Es war ein Beispiel für 'created_at' Attribut, aber jetzt sprechen Sie das Erstellungsdatum wahrscheinlich erhalten den gleichen Wert der Ursprungsaufgabe, nicht wahr? Ich erinnere mich nicht, wann ich es benutzen musste. Das gleiche für den Primärschlüssel. –

Verwandte Themen