web-dev-qa-db-ja.com

Laravel Carbon、平日で今日の日付を取得しますか?

私はカーボンを使用して2つの日付を今日の日付と比較していますが、データベースには次のような値を含む平日と呼ばれる別のフィールドもあります。

「MO」「TU」「WE」

だから、日付で検索して出力するだけでなく、平日で検索したいので:

public function show($id)
{   
    $today = Carbon::now();
    $weekday = //whatever carbon or something else has to retrieve today's day
    $event = Event::with('businesses')
       ->where('startdate', '<', $today->format('Y-m-d'))
       ->where('endate', '>', $today->format('Y-m-d'))
       //or where ('weekday') = $weekday?
       ->get();
    return view('events.showEvent', compact('event'));
}
9
Przemek Wojtas

Carbonがそのようなフォーマットを持っているかどうかはわかりませんが、何ができるかは、曜日のマップと現在の平日定数からwekkdayを取得することです:

$weekMap = [
    0 => 'SU',
    1 => 'MO',
    2 => 'TU',
    3 => 'WE',
    4 => 'TH',
    5 => 'FR',
    6 => 'SA',
];
$dayOfTheWeek = Carbon::now()->dayOfWeek;
$weekday = $weekMap[$dayOfTheWeek];
15
thefallen

英語圏のロケールを使用している場合、Carbonのl形式で処理を行うことにより、短い曜日形式を取得できます。これは、曜日名を返します。

strtoupper(substr($today->format('l'), 0, 2)); // Returns 'MO', 'TU', etc

Carbon 2にアクセスできる場合は、さらに短くすることができます(2018-08-31で利用可能):

strtoupper($today->isoFormat('dd'));
6
leonardost