使用Laravel Eloquent在MySQL列别名中放置空格


Putting spaces in MySQL column aliases with Laravel Eloquent

我正在尝试使用Eloquent查询数据库,并将结果导出到电子表格中。我目前的查询很好,流程正常:

$clients = Client::
        select("ref as id", "title as salutation", "firstname", "surname as lastname", "tel as phone", "alttel as mobile", "email", "address1 as addressline1", "address2 as addressline2", "address3 as addressline3", "address4 as addressline4", "postcode as postalcode", "status")
        ->get();

我想将字段名作为带空格的别名。我以为我可以做一件事:

"firstname as first name"
"firstname as 'first name'"
"firstname as `first name`"
'firstname as "first name"'

或者类似的东西。然而,这些都不起作用。列名只是以类似'first的形式返回。我在网上其他地方看到过一些东西,认为MySQL应该可以做到这一点——这是一个特别的Eloquent问题吗?

我需要其他方法吗?

非常感谢

我使用DB::raw解决了这个问题。如果其他人需要知道,下面是代码:

$clients = Client::
  ->select(DB::raw("ref as id, title as Salutation, firstname as 'First Name', surname as 'Last Name', tel as Phone, alttel as Mobile, email as Email, address1 as 'Address Line 1', address2 as 'Address Line 2', address3 as 'Address Line 3', address4 as 'Address Line 4', postcode as 'Postal Code', Status"))
  ->get();

这将返回带有空格的别名。

您列出的第一个选项在Laravel 9:中工作

DB::table('clients')->select('first_name as first name')->toSql()

退货:

select `first_name` as `first name` from `clients`