Ich entwickle eine API mit Laravel für die Verwendung mit einer mobilen App und habe einige Probleme mit Route Model Binding auf geschachtelten Routen. Die App wird über eine eigenständige sqlite db verfügen, die Client-Reisen mit dem zentralen Server synchronisiert, wenn das Netzwerk verfügbar ist. Aus diesem Grund können die PKs in der App nicht für den Zugriff auf die Datensätze auf dem zentralen Server verwendet werden. Jeder Benutzer hat einen eindeutigen Benutzernamen haben, die auf dem zentralen Server in einer Tabelle mit den folgenden Spalten gespeichert werden:Laravel geschachtelte Route Modellbindung
- User_id
- Benutzername
Die Reise Tisch wird dann die folgenden Spalten:
- j ourney_id
- User_id
- user_journey_id
wo die user_journey_id
wird die PK des Fahrtdatensatzes auf dem Client-Gerät sein. Die Idee ist, dass die Clients können dann auf die API mit etwa wie folgt zugreifen: http://example.com/api/client/UNIQUE_USERNAME/journey/1234 , um die Reise vom zentralen Server abrufen.
Ich habe folgende Ressourcen Setup:
Route::resource('client','ClientController');
Route::resource('client.journey','JourneyController');
und Setup-Route Modell erfolgreich verbindlich für den Kunden wie folgt:
$router->bind('client', function($value, $route) {
return \App\Client::where('username', '=', $value)->firstOrFail();
});
Ich bin mit der Einrichtung ein wenig Mühe mit der verschachtelte Modellbindung, da ich den Client username
in Verbindung mit dem user_journey_id
benötige, um die korrekte Reise abzurufen. Gibt es eine Möglichkeit, dies mit dem Routenmodell zu tun? aber die Strecke Modell verbindlich wäre es sicherlich macht ein bisschen leichter
public function show(Client $client, $user_journey_id)
{
... // have logic here to get the journey.
Dies ist, wie ich es zur Zeit:
Oder sollte dies nur mit einigen wie in der Steuerung erfolgen.
Anstatt den Benutzernamen zu verwenden, können Sie nicht einfach die Benutzer-ID verwenden, damit Sie die Modellbindung nicht verschachteln müssen. – Billy