如何在 laravel 查询构建器中为 sql select 列设置别名?
How can I alias sql select columns in laravel query builder?
我有一个这样的查询,我不确定如何为每个 table 的 select 列设置别名。你能帮我吗?
$columns = array_merge(json_decode($data->columns), json_decode($data->columns2));
$result = DB::table($data->type)
->select($columns)
->join('tabs', 'data.id', '=', 'tabs.id')
->get();
要回答您的问题,请像在 SQL 中那样添加 AS newColumnName
:
->select(['name AS title', 'email AS emailAddress'])
.
此外,您真的不想像这样将未经处理的 table 名称和列名称传递给您的查询。它们未被 Laravel 净化,是一个潜在的漏洞。更多信息可以在 https://laravel.com/docs/8.x/queries#where-clauses
的标注框中找到
根据我得出的结论,您想要 select 来自 $data->columns
的列并为它们起别名,就像它们在 $data->columns2
中一样。我不知道两者的数据结构,但我认为你的意思是这样的:
$select = array_map(
function($column, $alias) {
return "{$column} AS {$alias}";
},
$data->columns,
$data->columns2
);
var_dump($select);
这是一个沙盒:http://sandbox.onlinephpfunctions.com/code/12487b8f2d590aa9f0d7a6cb0d7d4f1f067b4cb0
我有一个这样的查询,我不确定如何为每个 table 的 select 列设置别名。你能帮我吗?
$columns = array_merge(json_decode($data->columns), json_decode($data->columns2));
$result = DB::table($data->type)
->select($columns)
->join('tabs', 'data.id', '=', 'tabs.id')
->get();
要回答您的问题,请像在 SQL 中那样添加 AS newColumnName
:
->select(['name AS title', 'email AS emailAddress'])
.
此外,您真的不想像这样将未经处理的 table 名称和列名称传递给您的查询。它们未被 Laravel 净化,是一个潜在的漏洞。更多信息可以在 https://laravel.com/docs/8.x/queries#where-clauses
的标注框中找到根据我得出的结论,您想要 select 来自 $data->columns
的列并为它们起别名,就像它们在 $data->columns2
中一样。我不知道两者的数据结构,但我认为你的意思是这样的:
$select = array_map(
function($column, $alias) {
return "{$column} AS {$alias}";
},
$data->columns,
$data->columns2
);
var_dump($select);
这是一个沙盒:http://sandbox.onlinephpfunctions.com/code/12487b8f2d590aa9f0d7a6cb0d7d4f1f067b4cb0