2015-12-13 12 views
6

Come posso copiare facilmente una riga di database e inserirla di nuovo, ma con un valore diverso per 1 campo?Laravel Copia record e duplicati con nuovi valori

ad esempio: ottenere ----> taks_name, project_id voglio copiare il compito, e inserirlo con un nuovo project_id

+1

Il metodo 'replicate()' Eloquent è quello che stai oking per. –

risposta

1

È possibile utilizzare replicate() e quindi aggiornare quella riga:

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

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

Si potrebbe utilizzare il metodo del modello di replicate come questo:

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

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

si potrebbe usare replicate metodo. Questo creerà un nuovo oggetto con gli stessi valori ad eccezione della chiave primaria e dei timestamp. Dopo di che è possibile salvare il modello:

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

Se si vuole si può modificare una proprietà

$new->project = $otherProject; 

e poi

$new->save(); 

se si desidera che il nuovo ID, facile:

$newID = $new->id; 
+0

Non c'è bisogno di impostare 'id' su' null', o il timestamp 'created_at' dato che il timestamp verrà impostato al salvataggio. –

+0

Era un esempio sull'attributo 'created_at' ma ora parli la data di creazione probabilmente ottieni lo stesso valore del compito di origine, no? Non ricordo quando ho avuto bisogno di usare. Lo stesso per la chiave primaria. –

Problemi correlati