2017-04-12 2 views
0

Ich habe drei Tische, die Turniere genannt, Runden & Pools. Runden-Tabelle hat einen Fremdschlüssel Turnier-ID und Pool-Tabelle hat einen Fremdschlüssel Round-ID. Ich habe ein Formular, wo ich gleichzeitig eine Runde und einen Pool erstellen kann. Ich füge normalerweise Daten zur Datenbank hinzu, die die Speicherfunktion eines bestimmten Controllers benutzt, der eine $ Anfrage verwendet.Speichern von Daten zu mehreren Tabellen mit Fremdschlüsseln in "Speicherfunktion" in Laravel

Beispiel: Dies ist im PoolController.

public function store(Request $request) 
{ 
    $pool = new Pool; 
    $pool->name = $request->poolName; 
    // $pool->round_id = $request->Roundname; 

    $pool->save(); 

    return redirect('/admin'); 
} 

Hier weiß ich nicht, wie man mit dem round_id beschäftigen. Wenn die Schaltfläche Erstellen gedrückt wird, müssen die neue Runde und der Pool gleichzeitig erstellt werden und die Runden-ID muss $ pool-> round_id zugewiesen werden.

Irgendwelche Hilfe bitte?

+0

Sie aktualisieren Kann die Einträge nicht gleichzeitig erstellen, muss der Rundsatz zuerst erstellt werden. – Shadow

+0

meinst du in der Runde Controller sollte ich eine neue Runde in der Speicherfunktion erstellen und speichern? – simplelenz

Antwort

0

Ich habe es endlich zur Arbeit gebracht. Ich habe das für die Round-Erstellung getan. Dafür müssen wir zuerst das Turnier erstellen. Dann habe ich in der Runde Controller den folgenden Code

use App\Round; 
use App\Tournament; 

public function store(Request $request) 
{ 
    $round = new Round; 
    $round->name = $request->roundName; 

    $tournament = new Tournament; 
    $tournamentName = $request->tournamentName; 
    $tournament = $tournament::where('name', $tournamentName)->firstOrFail(); 
    $tournament->rounds()->save($round); 

    return redirect('/admin'); 
} 

Hier Runde hat einen Fremdschlüssel namens Turnier-ID. Wie dies funktioniert, ist, wenn eine neue Runde Einsetzen wir das entsprechende Turnier zu finden sind durch

$tournament = $tournament::where('name', $tournamentName)->firstOrFail(); 

Dann rufen wir die Beziehung Funktion Runden() im Turnier Modell die neue Runde zu speichern, während die Fremdschlüssel

Verwandte Themen