Laravel 날짜 데이터에서 연도를 가져와 그룹에 넣기
9360 단어 PHPLaravelCollection
해봤어요.
date
열에서 연도로 변환하고 중복 항목을 삭제하고 정렬 값을 내립니다.※
date
열에 존재하는 연도만 획득할 수 있습니다.일반적인 연도(4월 1일~이듬해 3월 31일을 연도로 한다).
※ 2019년의 경우 2019년 4월 1일부터 2020년 3월 31일까지
StatusContoller.php
$dates = Status::pluck('date');
foreach ($dates as $date) {
$array[] = $date->subMonthsNoOverflow(3)->format('Y');
}
$years = collect($array)->unique()->sort()->reverse()->values();
dd($years);
sort () 정보
처음엔
->values()->sortByDesc('date');
할 수 있을까 생각했는데...dd($years);
의 결과↑ 요구하는 순서가 없습니다!일본어 문서를 보고 반복해서 시도했는데 항복했어요!!!
@mpyw선생님께서 상의하시고 알려주셨어요.
값을 내림차순으로 표시합니다(연간)!
->sort()->reverse()->values();
・pluck할 때 안에 있는 걸 꺼냈어요.・sortBy는 2차원 그룹이라고 가정하지만 이미 1차원 그룹이다
・ 원본 PHP의 경우sort 함수에 대응하여 rsort 함수가 있을 수 있음
・collection 역순으로 정렬하는 방법이 없으므로 정렬 후 수조를 반대로 정렬합니다
이런 일.
이렇게 하면 구한 값(연간)을 정렬할 수 있습니다!👏
참고로 어쨌든
sortByDesc
를 사용하려면 플러그 전에 사용할 수 있습니다sortByDesc('date')->pluck('date')
메모리를 소모해야 하기 때문에 추천하지 않습니다!맵() 사용 방법
댓글보다 키요미 씨가 알려줬어요.
StatusContoller.php
$years = Status::pluck('date')->map(function ($date) {
return $date->subMonthsNoOverflow(3)->format('Y');
})->unique()->sort()->reverse()->values();
dd($years);
검색 생성기 사용 방법
kiyoami씨가 알려줬어요.누차 감사합니다!
이것은 연도가 아니라 년(2020년)이다.➡2020년 1월 1일~2020년 12월 31일).
StatusContoller.php
$years = Status::selectRaw('year(`date`) `yyyy`')->distinct()->groupBy('date')->pluck('yyyy');
dd($years);
드롭다운 목록에 연도 표시하기
index.blade.php
<select name="year">
@foreach($years as $key => $name)
<option value="{{ $name }}"{{old('year', $year) == $name ? 'selected' : ''}}>{{ $name }}</option>
@endforeach
</select>
당분간 이걸로 연도를 배열하여 표시하고 완성한다.다음은 연간 데이터 취득 시
예를 들어 연도가 축소될 때가 있다.
상태표의
date
열에서 (선택 사항) 년 4월 1일부터 이듬해 3월 31일까지 데이터를 가져옵니다.StatusContoller.php
$year = $request->input('year');
$status = Status::query();
if (!empty($year)) {
$startAt = CarbonImmutable::createMidnightDate($year, 4, 1);
$endAt = $startDate->day(1)->addMonths(11)->endOfMonth();
$status->whereBetween('date', [$startAt, $endAt]);
}
$year
에 가입2015
했을 때$startAt
와 $endAt
는 다음과 같다.dd($startAt);
dd($endAt);
참고 문헌
이 글은 아래의 정보를 참고하였다.
Reference
이 문제에 관하여(Laravel 날짜 데이터에서 연도를 가져와 그룹에 넣기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/saya1001kirinn/items/aa918f4ca5134f0b16e5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)