【发布时间】:2021-08-22 12:36:05
【问题描述】:
有没有办法简化?我为整个日期、月份和年份选择了三次 date_billing 列。有没有办法做类似->having('YEAR(date_billing)', '=', $this->year); 和月份一样的事情?我有什么工作,但它有很多重复,我相信有更好的方法。下面是
->addSelect([
'date_billing' => Invoice::select(DB::raw('date_billing'))
->whereColumn("id", "=", "invoice_line_item.invoice_id"),
'month' => Invoice::select(DB::raw('MONTH(date_billing) month'))
->whereColumn("id", "=", "invoice_line_item.invoice_id"),
'year' => Invoice::select(DB::raw('YEAR(date_billing) year'))
->whereColumn("id", "=", "invoice_line_item.invoice_id")
])
->having('year' ,'=', $this->year)
->groupBy('month')
->get();
编辑:
我通过添加->whereYear()修复了“年”,允许我从 addSelect 数组中取出“年”,但我仍然需要有月份。
->addSelect([
'date_billing' => Invoice::select(DB::raw('date_billing'))
->whereColumn("id", "=", "invoice_line_item.invoice_id"),
->whereYear("date_billing", $this->year),
'month' => Invoice::select(DB::raw('MONTH(date_billing) month'))
->whereColumn("id", "=", "invoice_line_item.invoice_id"),
])
【问题讨论】:
标签: php laravel eloquent laravel-7