获取 Laravel 中的唯一年份值

Getting the unique year value in Laravel

我只想从此日期类型列中提取唯一的年份值。但我总是收到此错误“您可能需要添加显式类型转换”。

如果有 2020-06-23、2020-07-01、2019-01-02、2019-02-05 日期,我想要的输出是 return 唯一的年份值。所以输出应该是 2020 和 2019 only.Please 帮助。谢谢。

这是我的代码:

$year= DB::table('loans')
            ->select('date_release', DB::raw('YEAR(date_release) as year'))
            ->groupBy('year')
            ->get();

查询可以是(returns all when there are different dates from different years);

SELECT EXTRACT(YEAR FROM loans.date_release) AS year FROM loans group by year;

查询生成器将是

return DB::table('loans')
    ->select([DB::raw('EXTRACT(YEAR FROM loans.date_release) as year')])
    ->groupBy('year')
    ->pluck('year');

它打印以下内容多年

[2018, 2019, 2020]

我认为只有两种方法可以得到你想要的 首先,您需要添加另一列名称为年份并仅存储数据年份,您的查询将像这样

return DB::table('loans')
    ->select('year')->distinct('year');

第二个在 return 之前,你应该使用一些算法来提取年份,return 只有不同的年份,它会像这样

$year =  DB::table('loans')
    ->select([DB::raw('YEAR(date_release) as year')])
    ->groupBy('year')
    ->value('year');
$distinct_year = array();
foreach($year as $item){
    $years = date('Y', strtotime($item->year))
    if(!in_array($years, $distinct_year)){
         array_push($distinct_year, $years);
    }
}
return $distinct_year;