に表示してください。私は、特定の日時にデビューするサイトに取り組んでいます。チュートリアルは、各チュートリアルで設定された日付のすべての生徒に表示されます。しかし、チュートリアルは、各チュートリアルで設定された日時だけでなく、各チュートリアルで設定されているタイムゾーンに基づいてデビューさせてください。例えば、チュートリアルが米国の東部標準時間(EST)の午後8時にデビューする予定の場合、アプリケーションセットタイムゾーンでデビューするのではなく、その時間にデビューする必要があります。チュートリアルの日付と指定したタイムゾーンに基づくチュートリアルを
トリックを行うようなLaravel collection filter()を使用して、以下のコードを書きました。しかし、ページの読み込みに時間がかかり、laravel paginate()を使用できません。 Laravel paginate()を使用して、一度にレコード数を減らす必要があります。 4000以上のチュートリアルがあります。助けてください。
// upcoming tutorials
$tutorials = Tutorial::orderBy('id', 'desc)->paginate(20);
$futureTuts = $tutorials->filter(function ($value, $key) {
$today = new \DateTime('now');
$show_date = new \DateTime($value->show_date, new \DateTimeZone($value->timezones->name));
return $show_date > $today;
});
$upcoming_tuts = $futureTuts->all();
Laravelのデフォルトpaginate()を使用するには、これを回避するソリューションをご利用ください。私は、Laravelのページネーションを使うとページがより速く読み込まれると思います。私はLaravel 5.4を使用しています。
おかげ
ようなあなたのコントローラに発表されたスコープを使用することができます私は本当にあなたの言語を理解することはできませんが、私はあなたが、私はSID-心@答え –
としてあなたに2提案を与えている助けることができるようだ、どのようにすることができます私は、各チュートリアルで設定されたタイムゾーンをチェックするように統合しますか?今は、今日の日付とpublished_atの日付を比較しているだけです。 Carbon :: now()がpublished_at時刻とタイムゾーンと等しいかどうかをチェックします。 –