2016-05-17 10 views
3

Ich stoße mit Slug auf eine Straßensperre und suche deinen Expertenrat.Laravel 5 - Slug Implementation

Wir haben einen Fahrertisch, Autos Tabelle, Flotte-Besitzer-Tabelle.
- Fahrer haben Autos
- Fuhrparkbesitzer Fahrer haben, die Autos haben Ich versuche Slug wie folgt zu erstellen:

www.example.com/drivers/driver-name 
www.example.com/cars/car-name 
www.example.com/fleet-owners/fleet-owner-name 

In meinem Webapp ich die Schnecke mit eloquent-sluggable folgend mit entsprechenden das Merkmal implementiert.

Im Treibermodell ich eine Sluggable Methode erstellen haben, wie unten

protected $sluggable = [ 
     'build_from' => 'user.name', 
     'save_to' => 'slug', 
    ]; 

Für Fahrer, verwendet es user.name und speichert die jeweiligen Schnecke und es funktioniert als Treiber und Karten für beide erwartet.

Aber für Flottenbesitzer kann ich dies nicht tun, da für einen Flottenbesitzer der Name des Treibers als Treibername gespeichert ist, aber ich kann nicht auf diesen Namen verweisen oder Slug dafür erstellen.

+0

Möchten Sie den Namen des Flotteninhabers aus der Fleetowner-Tabelle als Slug für www.example.com/fleet-owners/fleet-owner-name abrufen? – ExohJosh

+0

Ja, das ist richtig. – Prabesh

Antwort

1

Ich habe Eloquent Sluggable nicht verwendet und bin mir nicht sicher, ob ich Ihr Datenbankschema verstehe, aber möglicherweise könnte so etwas funktionieren, vorausgesetzt, das Fleet Owner-Modell hat eine/gehört zu einer Driver-Modellinstanz.

public function getNameAttribute() 
{ 
    return $this->driver->name; 
} 

Dann würde die Flottenbesitzer Modell ein Namensattribut haben, dass Sluggable Gebrauch machen könnte:

protected $sluggable = [ 
     'build_from' => 'name', 
     'save_to' => 'slug', 
    ]; 

Sie werden es sicher machen müssen, ist eine Schnecke Spalte auf Ihrer Flotte Eigentümer Tabelle für diese arbeiten.

+0

Lassen Sie mich dies versuchen. Ich denke, Ihre Optionen haben einen anderen Ansatz ausgelöst, den ich ausprobieren kann. Lass mich es versuchen. Im Grunde sollte ich in der Lage sein, das Namensattribut in der träge Methode zu überprüfen und save_to in entsprechende Felder zu setzen. Danke Josh, lass mich das ausprobieren. – Prabesh

+0

Ok! Lass mich wissen wie es geht! –

+0

Ich konnte das Problem lösen. @Josh Rumbut deine Lösung hat funktioniert. Vielen Dank. – Prabesh

1

Ich konnte das Problem mit dem Vorschlag von Josh unten lösen. Im Modell habe ich eine Methode

public function getNameAttribute() 
{ 
    return $this->driver->name; 
} 

Dann in Sluggable verwenden 'name' nur in build_to und es funktioniert.