2015-12-14 7 views
5

Ich habe ein Formular, wo ein Benutzer ein Projekt in der Datenbank zusammen mit dem Erstellen eines neuen Benutzers, wo beide zusammen verknüpft werden können."Laravel 5.1" Benutzer und Projekt mit userId hinzufügen

Usersid und projects.user_id Werte in der Tabelle. Aber ich habe ein kleines Problem. Wenn ich die letzte ID aus der Benutzertabelle erhalte und diese für die nächste ID +1 verwende, funktioniert sie. Wenn jedoch ein Benutzer gelöscht wird, bevor das neue Projekt mit der ID hinzugefügt wird, kann es beim Start der Anwendung sehr unordentlich werden.

sagen wir, ich habe den letzten Benutzer als ID 5 in der Tabelle. aber jemand löschte es und ich machte ein neues Projekt mit einem neuen Benutzer am Tag danach. Jetzt wird die nächste ID ID 6. aber nach meinem Code gibt es 5 in der projects_table aber in der user_table wird es 6.

Ich frage mich, ob jemand mir eine Funktion vorschlagen kann, die ich für die richtigen IDs verwenden könnte?

Funktion die letzte ID für das Erhalten

public static function getLastRow(){ 
      $data = DB::table('users')->select('id') 
       ->orderBy('id', 'desc') 
       ->first(); 
      return $data->id; 
     } 

vor Validator zähle ich die letzte ID für sie zu Projekten Hinzufügen

$lastidplus = (int)User::getLastRow() + 1; 

in meinem Validator ich dies haben:

'user_id' => $lastidplus, 

HINWEIS :: das funktioniert, aber wenn in Zukunft die letzte Zeile in der Benutzertabelle gelöscht wird. es wird eine Kettenreaktion von falschen IDs in der entsprechenden Projekttabelle kommen, da er immer 1 Unterschied hat. und ich möchte das unmöglich machen.

+2

dank @Raj für die es ein bisschen schöner. wird mehr Aufmerksamkeit schenken, wenn Sie wieder einen Post machen! –

+2

Da Ihr Englisch nicht gut genug ist, können Sie einen Code in Ihre Frage aufnehmen, damit wir besser verstehen können – Digitlimit

+1

@StefanoGroenland ur immer wlcm – CandleCoder

Antwort

2

Wenn Sie versuchen, die ID eines neu erstellten Datensatz Versuch zu bekommen:

$user = User::create(['name'=>'Stefano']); 
$user->id 
+2

hat es geschafft mit '$ user = User :: create (...)' ''gebruiker_id' => $ user-> id' danke für die Idee! –