我被困住了,我想创建一个 Laravel Nova Metrics 趋势,它会走向 future ,而不是回到过去。
此代码将输出:2019年3月15日、2019年3月14日、2019年3月13日,
public function calculate(Request $request)
{
return $this->sumByDays($request, Payment::class, 'hours_per_month', 'upcoming_invoice_date')->showLatestValue();
}
/**
* Get the ranges available for the metric.
*
* @return array
*/
public function ranges()
{
return [
3 => '3 Days',
];
}
我已经对 Trend.php 进行了一些更改,但除了错误之外什么也没给我带来。
/**
* Return a value result showing a sum aggregate over days.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Database\Eloquent\Builder|string $model
* @param string $column
* @param string $dateColumn
* @return \Laravel\Nova\Metrics\TrendResult
*/
public function sumByDays($request, $model, $column, $dateColumn = null)
{
return $this->aggregate($request, $model, Trend::BY_DAYS, 'sum', $column, $dateColumn);
}
这可能吗?
谢谢
最佳答案
趋势范围在 Trend.php 中定义,因此您走在正确的轨道上!
查看 protected 函数聚合。
protected function aggregate($request, $model, $unit, $function, $column, $dateColumn = null)
{
$endingDate 可以更改为您想要的任何内容!
$possibleDateResults = $this->getAllPossibleDateResults(
$startingDate = $this->getAggregateStartingDate($request, $unit),
$endingDate = Chronos::now();
Chronos API 有很好的文档,但尝试这样的东西
$endingDate = Chronos::tomorrow()->addWeeks(4),
注意:我对此进行了非常少的测试,因此使用风险自负。它确实破坏了趋势指标的 showLatestValue() 方法,但如果您确实需要的话,可以在 TrendResult.php 中解决这个问题。
关于Laravel Nova future 指标趋势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55187025/