【问题标题】:How can I alias sql select columns in laravel query builder?如何在 laravel 查询生成器中为 sql 选择列添加别名?
【发布时间】: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的值是多少

标签: laravel laravel-query-builder


【解决方案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

【讨论】:

  • 这并不能真正回答我的问题:(
  • 我误解了这个问题吗?您是在问如何在选择列时使用别名?
  • 但是对于列作为变量传递的特定情况
  • 我告诉你,你真的不应该 :) 但如果你真的想......我会更新我的答案。
  • 谢谢你! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 2015-12-05
  • 2021-04-27
  • 2013-07-16
  • 1970-01-01
  • 2020-11-20
相关资源
最近更新 更多