Как объединить столбцы с Laravel 4 Красноречивый?


У меня есть таблица под названием tenantdetails, которая содержит

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

И я хочу получить First_Name и Last Name в виде одного столбца с помощью функции объединения MySQL. Поэтому я пишу в своем 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).

Как мы можем избежать обратных ссылок при вызове функции MySQL в Laravel Eloquent. Меня интересует только Красноречивый (а не беглый запрос). Спасибо в продвигаться вперед.

Обновление

Спасибо @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');
Author: boortmans, 2014-02-25

4 answers

Tenant::select('Tenant_Id', DB::raw('CONCAT(First_Name, " ", Last_Name) AS full_name'))
    ->orderBy('First_Name')
    ->lists('full_name', 'Tenant_Id');
 62
Author: Andreyco, 2014-02-25 08:34:28

Простой способ - использовать selectRaw. Это было реализовано Портным в Jan 30, 2014

Источник

Tenant::selectRaw('CONCAT(First_Name, " ", Last_Name) as TenantFullName, id')->orderBy('First_Name')->lists('TenantFullName', 'id'))
 7
Author: Michel Ayres, 2015-04-07 19:19:17

Метод списков(), используемый для выбора столбца из выбранного результата. Поэтому сначала свяжитесь с именем и фамилией и укажите этот столбец с новым псевдонимом в инструкции select

 $tenants = Tenant::orderBy('First_Name')->select(DB::row('CONCAT(`First_Name`," ",`Last_Name`) as name'),'Tenant_Id')->lists('name', 'id');

Затем вы можете выбрать этот псевдоним в методе lists()

 3
Author: Phailee Sharma, 2016-04-07 07:12:54

Вы должны использовать DB::raw() для объединения полей

Tenant::select(
          'Tenant_Id',
          DB::raw('CONCAT(First_Name,"-",Last_Name) as full_name')

        )
       ->orderBy('First_Name')
       ->lists('full_name', 'Tenant_Id');
 2
Author: Majbah Habib, 2016-08-01 10:46:14