Laravel의 $q->where() Between Dates를 사용하여 향후 7일 동안 반복되는 프로젝트를 효율적으로 쿼리하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-30 02:55:02
원래의
270명이 탐색했습니다.

How to Efficiently Query Projects Recurring in the Next 7 Days with Laravel's $q->날짜 사이에 where()가 있나요? 
날짜 사이에 where()가 있습니까? " />

Laravel $q->날짜 사이의 where(): 종합 가이드

문제 설명

쿼리 $q-> ;where('recur_at', '>', date("Y-m-d H:i:s", time() - 604800))는 recur_at 값이 현재 날짜보다 큰 프로젝트를 가져오는 원하는 기준을 충족하지 않습니다. 마이너스 7일.

해결책 1

다음 7일 이내에 반복될 프로젝트를 정확하게 찾으려면 다음 쿼리를 사용하세요.

<code class="php">$projects = Project::where(function($q) {
    $q->where(DB::raw('recur_at BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()'));
    $q->where('status', '<', 5);
    $q->where('recur_cancelled', '=', 0);
});</code>
로그인 후 복사

솔루션 2(Carbon으로 최적화)

날짜 조작을 위해 Carbon 패키지를 사용하여 쿼리 강화:

<code class="php">$projects = Project::where('recur_at', '<=', Carbon::now()->addWeek())
    ->where('recur_at', '!=', "0000-00-00 00:00:00")
    ->where('status', '<', 5)
    ->where('recur_cancelled', '=', 0);</code>
로그인 후 복사

최적화된 솔루션

Joel Friedman이 제안한 것처럼 다음 쿼리가 더 간결하고 효율적입니다.

<code class="php">$projects = Project::whereBetween('recur_at', array(Carbon::now(), Carbon::now()->addWeek()))
    ->where('status', '<', 5)
    ->where('recur_cancelled', '=', 0);</code>
로그인 후 복사

이 솔루션은 whereBetween 메서드를 활용하여 recur_at 필드의 범위를 지정하여 recur_at 값이 있는 프로젝트를 효과적으로 검색합니다. 7일 이내.

위 내용은 Laravel의 $q->where() Between Dates를 사용하여 향후 7일 동안 반복되는 프로젝트를 효율적으로 쿼리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿