Laravel Nova future 指标趋势

标签 laravel laravel-nova

我被困住了,我想创建一个 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/

相关文章:

javascript - 将 HTML 输入值传递给 jQuery 表单值

php - 检查 Laravel 中的 session 超时

php - 使用 Laravel Nova 显示指标趋势的问题 - 参数太少

laravel - 为 Laravel Nova 启用 VueJS DevTools

laravel - 如何从laravel nova的资源列表中删除所有复选框?

Laravel nova - 使用 Action 允许多次下载

php - Laravel Eloquent - 覆盖模型的构造函数以更改属性

date - Laravel Eloquent Birthdays 查询仅根据日期和月份获取日期列

php - Laravel Nova 不坚持新模型

php - laravel 中不区分大小写