我如何将此查询(postgresql)转换为 laravel eloquent

How can i convert this query(postgresql) to laravel eloquent

我想将下面的 postgresql 代码转换为 laravel eloquent

select s2.itemdesc,
       to_char(date_trunc('month', saledate), 'YYYY') AS year,
       to_char(date_trunc('month', saledate), 'Month') AS month,
       to_char(date_trunc('month', saledate), 'MM') AS month_number,
       sum(qty) AS qty1
from sale s left join saled s2 on s.saleno = s2.saleno 
GROUP BY s2.itemdesc, date_trunc('month', saledate)
order by s2.itemdesc desc and month desc

我试过在 Postgresql 管理器中查询及其工作。但是我在转换为 Laravel eloquent

时失败了

DB::query() returns 查询生成器的实例。

从那个实例开始,您可以将要 select 的列列为使用 select() 的逗号分隔参数。 对于计算列或聚合列,传递 DB::raw(expression) 而不是原始表达式有效。另一种方法是将所有内容作为单个参数传递给 selectRaw 也是一种选择。

select 主要 table 有两种方法:查询生成器的 from(table, alias) 方法。别名参数是可选的。 table 参数可以是字符串或子查询 table 的闭包。 DB::table(table, alias) 也有效。它在功能上与 DB::query()->from(table, alias).

相同

groupBy()/groupByRaw()用于按列分组。

orderBy()/orderByRaw()用于按列排序。

DB::query()
    ->select(
        's2.itemdesc',
        DB::raw("to_char(date_trunc('month', saledate), 'YYYY') AS year"),
        DB::raw("to_char(date_trunc('month', saledate), 'Month') AS month"),
        DB::raw("to_char(date_trunc('month', saledate), 'MM') AS month_number"),
        DB::raw("sum(qty) AS qty1")
    )
    ->from('sale', 's')
    ->leftJoin('saled s2', 's.saleno', 's2.saleno')
    ->groupByRaw("s2.itemdesc, date_trunc('month', saledate)")
    ->orderByRaw("s2.itemdesc desc, month desc")
    ->get();

Eloquent 模型的工作方式相同。

Sale::query()->...