繁体   English   中英

Laravel MS SQL DB::RAW 查询返回“列名无效”

[英]Laravel MS SQL DB::RAW Query returns “Invalid column name”

我在我的 Laravel 应用程序中使用 SQL 服务器。 我需要对月/年的表格进行分组/汇总。 我的查询如下所示:

$positions = BelegPos::select(
    DB::raw("YEAR(Datum) as year"),
    DB::raw("MONTH(Datum) as month"),
    DB::raw("SUM(Menge) as stunden")
)->groupBy("year", "month")
    ->get();

我将收到以下错误消息:

SQLSTATE[42S22]:[Microsoft][用于 SQL 服务器的 ODBC 驱动程序 17][SQL Server]列名“年份”无效。

我不知道出了什么问题,因为我构建它的查询方式适用于 MySQL 服务器。

感谢您提供正确方向的任何提示。

更新

我进行了更多研究并阅读了一些内容,指出 Select 语句在 GROUP BY 部分中不可用,并且您必须在那里添加相同的查询。 所以我的查询现在看起来像这样:

$positions = selectlineBelegPos::select(
                                        DB::raw("YEAR(Datum) as the_year"),
                                        DB::raw("MONTH(Datum) as the_month"),
                                        DB::raw("SUM(Menge) as stunden")
                                        )
                                        ->groupBy(DB::raw("YEAR(Datum) as the_year"),DB::raw("MONTH(Datum) as the_month"))
                                        ->get();

仍然不是解决方案,但错误消息已更改为:

SQLSTATE[42000]:[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]关键字附近的语法不正确(SQL:select YEAR(Datum) as the_year,MONTH(Datum) as thetunMeden_month,SUM( [BELEGP]

所以我认为只有一件小事错了,但无法弄清楚是什么。

有任何想法吗?

解决方案

刚刚找到解决方案:

$positions = selectlineBelegPos::select(
                                       DB::raw("YEAR(Datum) AS year"),
                                       DB::raw("MONTH(Datum) AS month"),
                                       DB::raw("SUM(Menge) AS stunden")
                                       )
                                       ->groupBy(DB::raw("YEAR([Datum])"),DB::raw("MONTH([Datum])"))
                                       ->get();

事实上,动态值名称(年和月)在 GROUPBY 子句中不可用,而是您必须再次调用 DB::raw 但现在无需再次生成关键字。

谢谢大家的支持!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM