如何在 laravel 查询生成器中为 sql 选择列添加别名?
Posted
技术标签:
【中文标题】如何在 laravel 查询生成器中为 sql 选择列添加别名?【英文标题】:How can I alias sql select columns in laravel query builder? 【发布时间】:2022-01-23 00:21:30 【问题描述】:我有一个这样的查询,我不确定如何为每个表的选择列设置别名。你能帮我解决这个问题吗?
$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();
【问题讨论】:
$columns
的值是多少
【参考方案1】:
要回答您的问题,请像在 SQL 中一样添加 AS newColumnName
:
->select(['name AS title', 'email AS emailAddress'])
.
此外,您真的不想像这样将未经处理的表名和列名传递给您的查询。它们没有被 Laravel 清理,是一个潜在的漏洞。更多信息可以在https://laravel.com/docs/8.x/queries#where-clauses的标注框中找到
从 cmets 中我得出的结论是,您希望从 $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
【讨论】:
这并不能真正回答我的问题:( 我误解了这个问题吗?您是在问如何在选择列时使用别名? 但是对于列作为变量传递的特定情况 我告诉你,你真的不应该 :) 但如果你真的想......我会更新我的答案。 谢谢你! :)以上是关于如何在 laravel 查询生成器中为 sql 选择列添加别名?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 查询生成器中为同一列构建多个条件的查询?