2017-05-09 3 views
1

Ich brauche eine Aufzeichnung auf Datenbank zu vervielfältigen, und wenn vorhanden eine Nummer hinzufügen neben dem Namen, zum Beispiel:doppelte Datensatz eine Nummer hinzufügen, wenn vorhanden

MyRecord

MyRecord duplizieren 1

Wenn i Duplikat wieder

Mein Rekord duplizieren 2 und so weiter ...

ich habe versucht,

foreach($records as $record) { 
       $nombre = $record->name; 
       $newName= $record->name." - DUPLICATED 1"; 
       //If exists 
       if ($nombre = $newName) { 
        $valor = substr($nombre, -1); //Get last value of string, it will be the number, its always at the end. 
        $num = $valor; 
        $int = (int)$num; 
        $float = (float)$num; 
        $float++; 
        $newName= $record->name." - DUPLICATED ".$float; 

        //Second try 
        if ($nombre = $newName) { 

         $valor = substr($nombre, -1); 
         $num = $valor; 
         $int = (int)$num; 
         $float = (float)$num; 
         $float++; 

         $today = Carbon::now();    
         DB::table('table')->insert(... 

Das Problem ist, wenn die foreach kommt es wieder trieds den Wert a ein Duplikat auf Namen machen einzufügen, so habe ich jetzt

Namen duplizieren 1

Namen duplizieren 2

Namen duplizieren 2 -> anstelle von 3

+0

'if ($ nombre = $ newName)' Ich glaube, dass Sie hier zuweisen, anstatt zu vergleichen, if ($ nombre == $ newName) ' –

+0

das Problem ist, scheint es nicht die neuesten Datensatz mit dem gleichen zu finden Name ... ich denke, dass das Problem, also, wenn es einen gleichen Namen gibt, float ++ und es wird einen neuen Namen haben ... das ist meine Logik ... vielleicht bin ich falsch. – lucasvm1980

Antwort

0

Ok habe ich es auf diese Weise

do { 
       //do while name exists 
       $clone++; 
       $newName = $record->name." - CLONED - ".$clone; 
       $nameExists= DB::table('record') 
            ->where('name', '=', $newName) 
            ->first(); 

      } while ($nameExists); 
Verwandte Themen