Laravel 4 Eloquentで列を連結するにはどうすればいいですか? 質問する

Laravel 4 Eloquentで列を連結するにはどうすればいいですか? 質問する

というテーブルがあり、tenantdetailsその中には

Tenant_Id | First_Name | Last_Name | ........

First_NameそしてMySQLの連結関数を使って1つの列として取得したい。そこで次のようにLast Name記述する。controller

$tenants = Tenant::orderBy('First_Name')->lists('CONCAT(`First_Name`," ",`Last_Name`)','Tenant_Id');

しかし、次のエラーが発生します。

 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).

Laravel Eloquent で MySQL の関数を呼び出すときにバックティックを回避するにはどうすればよいでしょうか? 私は Eloquent にのみ興味があります (Fluent クエリには興味がありません)。よろしくお願いします。

アップデート

助けてくれた @Andreyco に感謝します。以下のように、Laravel モデルを使用して、よりエレガントな方法でこれを実現できます。

私たちの中でmodel

public function getTenantFullNameAttribute()
{
    return $this->attributes['First_Name'] .' '. $this->attributes['Last_Name'];
}

そして私たちのcontroller

$tenants = Tenant::orderBy('First_Name')->get();
$tenants = $tenants->lists('TenantFullName', 'Tenant_Id');

ベストアンサー1

Tenant::select('Tenant_Id', DB::raw('CONCAT(First_Name, " ", Last_Name) AS full_name'))
    ->orderBy('First_Name')
    ->lists('full_name', 'Tenant_Id');

おすすめ記事