Ich habe eine Tabelle namens tenantdetails
dieWie verketten Spalten mit Laravel 4 eloquent?
Tenant_Id | First_Name | Last_Name | ........
enthält, und ich will über die Verkettungsfunktion von MySQL First_Name
und Last Name
als eine Spalte abzurufen. Also schreibe ich in meinem controller
wie folgt
$tenants = Tenant::orderBy('First_Name')->lists('CONCAT(`First_Name`," ",`Last_Name`)','Tenant_Id');
aber ergibt sich die folgende Fehlermeldung:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`," ",`First_Name`)`, `Id` from `tenantdetails` order by `F' at line 1 (SQL: select `CONCAT(`First_Name`," ",`Last_Name`)`, `Id` from `tenantdetails` order by `First_Name` asc).
Wie können wir die Backticks zu vermeiden, während eine Funktion von MySQL in Laravel Eloquent aufrufen. Ich interessiere mich nur für Eloquent (nicht in fließender Anfrage). Danke im Voraus.
aktualisieren
Dank @Andreyco für mich zu helfen. Wir können dies in einer eleganteren Weise erreichen, wie unten mit Laravel Modellen:
In unserem model
:
public function getTenantFullNameAttribute()
{
return $this->attributes['First_Name'] .' '. $this->attributes['Last_Name'];
}
und in unserem controller
:
$tenants = Tenant::orderBy('First_Name')->get();
$tenants = $tenants->lists('TenantFullName', 'Tenant_Id');
Diese vorbildliche Lösung ist ehrfürchtig. Ist das irgendwo in der Dokumentation? –
@Kyle Ridolfo. Vielen Dank. Eigentlich vergesse ich die Quelle für die Lösung. Aber ich bin mir sicher, dass ich bis zu diesem Tag nicht auf der Dokumentation nach der Lösung gesucht habe. – manuthalasseril