2016-10-28 62 views
0

我已创建使用复制在这里重复行是我的功能我想补充的名字领域的一些附加数据(Laravel 5.3)

public function copy($id){ 

    $task = Task::find($id); 
    $copy = $task->replicate(); 
    $copy->save(); 
    session()->flash('msg','successfully Copied!'); 
} 

我想,在复制我的名字字段应该改变

任务1 - 复制

如果我做第二个副本,它应该是为

任务1 - 副本2

请帮我使其相应

回答

0

你可以尝试这样的

$task = Task::find($id); 

$copy = $task->replicate(); 
$copy->name = $copy->name.'2'; 
$copy->save(); 
+0

其更换名称与副本2我还需要名称 现在意味着如何连接名称与副本词@jaimin –

+0

@recove我已经改变了我的答案。你想要这样的东西吗? – Jaimin

+0

非常接近 我现在使用这个 $ copy-> name = $ copy-> name。“”.'Copy /'.$ id; 如果我为copyid创建副本它创建新副本为副本Copy/29,因为它的ID是29,如果我再次复制副本它应该是复制/ 30但现在它的制作复制/ 29 @jaimin –

0

像这样的东西应该工作

$task = Task::find($id); 

$copy = $task->replicate(); 

// If the name contains the word 'copy' create the next one 
if (str_is('copy', $copy->name)){ 

    //Get the last word 
    $words = explode(' ', $copy->name); 
    $last_word = array_pop($words); 

    // If the last word is 'copy' create the right number, else it's the first copy 
    if ($last_word == 'copy'){ 
     $copy->name = str_finish($copy->name, ' 2'); 
    } else { 
     $number = strval(intval($last_word) + 1); 
     $copy->name = str_finish(implode(" ", $words), ' ' . $number); 
    } 
// Else create the first one 
} else { 
    $copy->name = str_finish($copy->name, ' - copy'); 
} 

$copy->save();