man*_*ril 40 php mysql laravel laravel-4
我有一个名为tenantdetailscontains 的表
Tenant_Id | First_Name | Last_Name | ........
Run Code Online (Sandbox Code Playgroud)
我希望通过MySQL的连接功能检索First_Name并Last Name作为一列.所以我写下我controller的内容如下
$tenants = Tenant::orderBy('First_Name')->lists('CONCAT(`First_Name`," ",`Last_Name`)','Tenant_Id');
Run Code Online (Sandbox Code Playgroud)
但结果出现以下错误:
Run Code Online (Sandbox Code Playgroud)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模型以更优雅的方式实现此目的,如下所示:
在我们的model:
public function getTenantFullNameAttribute()
{
return $this->attributes['First_Name'] .' '. $this->attributes['Last_Name'];
}
Run Code Online (Sandbox Code Playgroud)
在我们的controller:
$tenants = Tenant::orderBy('First_Name')->get();
$tenants = $tenants->lists('TenantFullName', 'Tenant_Id');
Run Code Online (Sandbox Code Playgroud)
And*_*yco 68
Tenant::select('Tenant_Id', DB::raw('CONCAT(First_Name, " ", Last_Name) AS full_name'))
->orderBy('First_Name')
->lists('full_name', 'Tenant_Id');
Run Code Online (Sandbox Code Playgroud)
一个简单的方法是使用selectRaw.它由Tailor实施Jan 30, 2014
Tenant::selectRaw('CONCAT(First_Name, " ", Last_Name) as TenantFullName, id')->orderBy('First_Name')->lists('TenantFullName', 'id'))
Run Code Online (Sandbox Code Playgroud)