2016-08-29 1 views
0

Ich habe ein Problem, an dem ich schon eine ganze Weile arbeite.Wohin mit benutzerbezogenen Get-Funktionen versetzt werden

Ich verwende Laravel 5.0 und haben Beziehungen aufgebaut:

  • Ein Benutzer viele Routen
  • Eine Reiseroute viele Ziele
  • Ein Benutzer viele Ziele durch Routen haben haben kann, hat

Jetzt versuche ich eine Funktion einzurichten, die ich in vielen Controllern brauche. Ich habe diese Funktion in User.php:

public function last_destination() { 
    return $last_destination = 
     \App\Destination::where('itinerary_id', auth()->user()->active_itinerary_id) 
     ->orderBy('order_index', 'DESC') 
     ->first(); 
} 

Wenn ich versuche, das letzte Ziel abgerufen werden, es funktioniert gut, aber wenn ich das letzte Ziel als Variable auf einen Blick übergeben, es throughs mir den Fehler: Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation

Sollte ich diese Funktion in eine andere Klasse legen? Wenn ja, wo sollte ich es noch als $ user-> last_destination() nennen?

Ich freue mich über jede Hilfe!

Vielen Dank! Sebastian

+0

Können Sie den Code anzeigen, den Sie verwendet haben, um das 'last_destination' in Ihrer Ansicht anzuzeigen? – Johnny

+0

In meinem Controller habe ich: '$ last_destination = auth() -> Benutzer() -> last_destination(); return view ('destinanations.create') -> mit ('last_destination', $ last_destination '); ' Und aus meiner Sicht rufe ich z. '{{$ last_destination ['city']}}' –

Antwort

1

Sie versuchen höchstwahrscheinlich, $user->last_destination irgendwo aufzurufen, als ob Sie eine Relation zurückgegeben hätten.

Verwenden Sie stattdessen $user->last_destination(). Oder aktualisieren Sie Ihre Methode, um eine Relation Instanz zurückzugeben.

+0

Nein, ich rufe $ user-> last_destination() an, erhalte aber immer noch diesen Fehler. Ich gebe ein einzelnes Modell und keine Sammlung zurück. Kann das das Problem sein? –

+1

Sind Sie sicher, dass es keinen anderen Ort gibt, an dem Sie es als Attribut anstatt als Methode bezeichnen? Wo wird die Ausnahme ausgelöst? (Datei und Zeile) Ist es der Controller oder die Ansicht? – alepeino

+0

Ich stimme @Alejandro zu. Nach meinem Wissen ist der einzige Weg, diesen Fehler zu finden, wenn Sie versuchen, diese Methode als eine Eigenschaft zuzugreifen. Vielleicht versuchen Sie in Ihrem Projekt nach "-> last_destination" zu suchen, sehen Sie, was auftaucht. – Johnny