Laravel 5 eloquent 的 CONCAT 列

新手上路,请多包涵

将我视为 laravel 初学者

目标是:我有两个列,现在我需要 id 以表中同一行的 component name 为前缀。

例如(工作)……我有Mysql之类的

SELECT CONCAT(components.name," ", components.id) AS ID
FROM   `components`

输出是

ID

 |TestComp 40  |
 -------------
|component 41 |
 -------------
|test 42      |

我需要同样的 laravel 雄辩的方式,因为这里的 Component 是模型名称。所以我尝试了类似的东西

$comp=Component::select("CONCAT('name','id') AS ID")->get()

但它不起作用。

我认为是因为语法错误。

请帮助我正确的语法。使用 laravel Models

注意:我进行了上述查询,将其称为互联网上可用的。

 User::select(DB::raw('CONCAT(last_name, first_name) AS full_name'))

原文由 Eliyaz KL 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 605
2 个回答

您需要将查询包装在 DB::raw 中:

 $comp = Component::select(DB::raw("CONCAT('name','id') AS ID"))->get()

另外,请注意,因为您正在执行这样的查询,您的模型可能会表现不同,因为此选择会从选择语句中删除所有其他字段。因此,如果没有新查询,您将无法从模型中读取其他字段。所以只使用它来读取数据而不是修改数据。

此外,为了使其成为一个不错的列表,我建议您将查询修改为:

 $comp = Component::select(DB::raw("CONCAT('name','id') AS display_name"),'id')->get()->pluck('display_name','id');
// dump output to see how it looks.
dd($comp);// array key should be the arrray index, the value the concatted value.

原文由 Tschallacka 发布,翻译遵循 CC BY-SA 3.0 许可协议

这段代码应该可以工作:

 User::select(\DB::raw('CONCAT(last_name, first_name) AS full_name)')

原文由 Hojjat 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题