php - 如何使用 Laravel 4 Eloquent 连接列?

我有一个名为 tenantdetails 的表,其中包含

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

我想通过 MySQL 的连接函数将 First_NameLast 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 感兴趣(对流利的查询不感兴趣)。提前致谢。

更新

感谢@Andreyco 帮助我。我们可以使用 Laravel 模型以更优雅的方式实现这一点,如下所示:

在我们的模型中:

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');

最佳答案

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

https://stackoverflow.com/questions/22008487/

相关文章:

mysql - 获取 "Count(*)"与 "GROUP BY"中所有项目数的百分比

mysql - 带有引用 MySQL 中同一个表的子查询的 SQL UPDATE

mysql - INSERT ... 使用 WHERE 进行重复的 key 更新?

php - 从字段不匹配条件的表中选择

php - 选择在 wp_usermeta 表中的多行上具有合格数据的用户

mysql - 列计数与第 1 行的值计数不匹配

mysql - 仅获取mysql中时间戳中的日期

php - DateTime 类的对象无法转换为字符串

python - 如何安装 MySQLdb 包? (导入错误 : No module named s

php - MySQL 删除多列