날짜 사이에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!