2017-08-18 2 views
0

Ich wollte nur wissen, ob es möglich ist, einen definierten Accessor im Laravel Repository zu laden. Ich verwende derzeit dieses l5-repository Paket und Laravel 5.4.Laravel Repository eagle load vordefinierter Accessor

In meinem UserInfo.php Modell, ich habe diese Funktion

public function getFullNameAttribute() 
{ 
    return ucfirst($this->first_name . " ". $this->last_name); 
} 

Dann ich versuche eifrig Last, die Accessor in meinem Controller so.

$user_infos = $this->repository->with('full_name')->all(); 
// or $user_infos = $this->repository->with('getFullNameAttribute')->all(); 
return response()->json([ 'data' => $user_infos ]); 

Ich weiß, dass es nicht funktionieren wird. Ich suche nur nach einer ähnlichen Möglichkeit, meinen Accessor full_name in meiner Sammlung hinzuzufügen. Also muss ich nicht in meinem Frontend verketten. So würde mein erwartete Ergebnis sein

{ 
    id : 1, 
    first_name : "Sample fname", 
    last_name : "Sample lname", 
    ..... 
    ..... 
    full_name : "Sample fname Sample lname", 
} 
+0

Die Logik des eifrigen Ladens ist anders mit Ihrer Situation. Es wird für Relationen verwendet und in diesem Beispiel macht es keinen Sinn es zu verwenden. – MisaGH

+0

Auch der Accessor wird in Ihrer Sammlung verfügbar sein und Sie können ihn verwenden. Wenn Sie jedoch eine andere Sammlung erstellen möchten, können Sie diese Schleife durchlaufen und manuell einfügen. – MisaGH

+0

Das Problem ist, ich kann nur den 'full_name' bekommen, wenn ich diese Sammlung auf meinem Controller loopen. Ich kann in meinem Frontend (JS) nicht darauf zugreifen. Es gibt ein Update in meiner Frage, die ich 'return response() hinzugefügt habe -> json (['data' => $ user_infos]);' –

Antwort

1

Verwenden $appends in Ihrem Modell UserInfo.php

protected $appends = ['full_name']; 

Dieses dieses benutzerdefinierte Feld in Ihrer Sammlung anhängen wird.

Dann können Sie es hier sehen:

$user_infos = UserInfo::all(); 
$user_infos->toJson(); 

Sie können die beigefügten Accessor im json sehen.

+0

Nizza. Vielen Dank. Ist das eine gute Übung? –

+0

Persönlich mag ich keine Accessoren. Ich möchte es in eine separate Methode extrahieren und durch die Sammlung durchschleifen, um darauf zuzugreifen. Aber wenn du magst, kannst du es tun. – MisaGH