web-dev-qa-db-fra.com

Laravel Carbon, récupérer la date du jour avec le jour de la semaine?

J'utilise du carbone pour comparer 2 dates avec la date d'aujourd'hui, mais j'ai également un autre champ dans une base de données appelée semaine qui contient des valeurs comme:

'MO' 'TU' 'WE'

Je ne veux donc pas seulement rechercher et produire par date, mais aussi par jour de semaine:

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

Je ne suis pas sûr que Carbon ait un tel formatage, mais ce que vous pourriez faire est d'obtenir le wekkday à partir d'une carte des jours et de la constante du jour de la semaine actuelle:

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

Si vous êtes dans une région anglophone, vous pouvez obtenir ce format de jour de semaine court en effectuant un traitement sur le format l de Carbon, qui renvoie les noms de jour de semaine:

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

Il peut être encore plus court si vous avez accès à Carbon 2 (disponible le 31/08/2018):

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