此查询用于通过group // unique获取具有日期最高值的其他数据。在这里我用唯一代替了分组依据。
我的问题是如何通过group by / unique获取min(date)和max(date)。
分组依据/唯一性用于数据集表的日期字段。
我已经搜索过此内容,但没有获得确切的解决方案,即如何在laravel中雄辩地通过group // unique获取最大和最小日期。
在表结构中,一个代码有多个条目,因此在这里我使用group by / unique来获取该代码的一条记录。
可以有多个日期,例如02-01-2003、01-03-2007、01-01-2019、01-07-2018 ...等,使用相同/不同的代码。如果我按代码分组,则每个代码只记录一条记录。所以在这里我要选择最大日期[01-01-2019]和最小日期[02-01-2003]。
谢谢。
控制器:
$datasets = Dataset::where('user_id', $user_id)
->orderBy('date','desc')
->get(['code', 'access','user_id','date'])
->unique('code');
答案 0 :(得分:0)
尝试像这样选择最大和最小日期:
$datasets = Dataset::select('code', 'access','user_id', DB::raw('MAX(date) as max_date'), DB::raw('MIN(date) as min_date'))
->where('user_id', $user_id)
->orderBy('date','desc')
->get()
->unique('code');
答案 1 :(得分:0)
最后我得到了解决方案,但这不能是确切的解决方案,但是由于我是新手,没有得到确切的解决方案,所以我按以下方式执行此功能:
我创建了两个不同的查询来获取最小值和最大值。
$min_datasets = Dataset::where('user_id', $user_id)
->orderBy('date','asc')
->get(['code', 'access','user_id','date'])
->unique('code');
$max_$datasets = Dataset::where('user_id', $user_id)
->orderBy('date','desc')
->get(['code', 'access','user_id','date'])
->unique('code');
答案 2 :(得分:-1)
$data = DB::table('table_name')->where('user_id',$user_id)
->select('code','access','user_id','date')
->whereBetween('date', [02-01-2003, 01-01-2019])
->groupBy('unique_column')
->get()