Laravel Eloquent 不同时间戳的年份

Maa*_*per 2 mysql eloquent laravel-5

在某些索引上,我有过滤结果的选择框,其中 1 个按年份过滤。但此选择框只需要相关表中存在的年份。在网上做了一些研究后,我想出了这个:

public function getAvailableYears(string $column)
{
    $years = $this->model->selectRaw("substr({$column},1,4) as year")
                         ->distinct('year')
                         ->pluck('year', 'year')
                         ->toArray();

    return ['' => 'All'] + $years;
}
Run Code Online (Sandbox Code Playgroud)

这完美地生成了一个准备插入到 Form::select() 中的数组

我想知道是否有更好的方法来做到这一点。它似乎工作正常,因为时间戳总是以年份开始,但我不确定性能或将来可能遇到的其他问题。任何专家的见解都会很棒。

syl*_*nix 6

我还尝试为报告模块创建年份下拉菜单,并希望从数据库表中获取唯一的年份,特别是“created_at”字段。经过大量尝试和修补后想出了这个。结果已经是一个数组,不需要转换它。

尝试这个:

$result = App\ModelName::select(DB::raw('YEAR(created_at) as year'))->distinct()->get();
$years = $result->pluck('year');
Run Code Online (Sandbox Code Playgroud)