2017-05-29 7 views
0

Ich bin neu auf Laravel 5.4 und arbeite derzeit an einem kleinen Projekt auf Laravel. Gemäß meinen Kundenanforderungen habe ich einige Tabellenspalten mit dem CamelCase-Standard umbenannt, der gegen die Laravel-Namenskonvention verstößt.Accessor funktioniert nicht in Laravel 5.4

Zum Beispiel hat Meine Tabelle "A" die Spalten "Status" und "FirstName" anstelle von "Status" und "first_name".

Nun, ich bin mit Accessor in Modelldatei Wert dieser Spalten zu ändern, indem Funktion gegeben Erstellen unter:

public function getStatusAttribute($val) { 
    reutrn $val . ' Status'; 
} 

public function getFirstNameAttribute($val) { 
    return 'User is '.$val; 
} 

Wenn ich Daten mit elequent Prozess am Abrufen, dann wird das System Wert diesen als Leer Rückkehr .

Wenn ich den Spaltennamen nach "Laravel Naming Convention" umbenennen, dann gibt es mir richtige Ergebnisse.

Ich weiß nicht, was das genaue Problem hier ist. Bitte teilen Sie Ihre Lösung mit, um dieses Problem zu beheben.

+0

Hilft Ihnen dieser Beitrag? https://laracasts.com/discuss/channels/eloquent/column-alias-definitions – kerrin

Antwort

1

Greifen Sie direkt auf die Felder zu.

public function getStatusAttribute() 
{ 
    return $this->Status . ' Status'; 
} 

public function getFirstNameAttribute() 
{ 
    return 'User is ' . $this->FirstName; 
} 

Fügen Sie dies dem Modell hinzu, damit diese Felder jedes Mal angefügt werden.

protected $appends = [ 
    'status', 'first_name', 
]; 
+0

Hallo. Problem ist, dass diese Funktionen nicht von Laravel aufgerufen werden. – Dhirender

+0

@Dirender aktualisierte meine Antwort. Sie müssen die '$ anhangs'-Eigenschaft für Laravel festlegen, um diese Felder automatisch für jedes Ergebnis hinzuzufügen. – Sandeesh

Verwandte Themen