2 votes

Comment vérifier l'enregistrement de la date actuelle dans Laravel ?

Je suis en train de vérifier game_id uniquement pour aujourd'hui ou la date actuelle et pour cela, j'essaie le script suivant

$todayExist = Training::whereRaw("Date(created_at)=Curdate() and game_id=$game_id")->get();
        if($todayExist->count() > 0 ){
            $error = 1;
            $result = false;
        } 

Le résultat de la requête ci-dessus est

select * from `games_training` where Date(created_at)=Curdate() and game_id=6

Mais pour game_id=6 il y a une entrée en double, car elle a été générée il y a 3 heures (heure de Dubai).

Alors est-ce que quelqu'un pourrait gentiment me guider sur quel pourrait être le problème? Est-ce une mauvaise requête ou cela s'est-il produit à cause du fuseau horaire du serveur.

Je viens juste d'insérer l'enregistrement, dans la base de données du serveur il affiche 09:31:57 ce qui signifie 09:31 AM, cependant je suis à Dubai et il est actuellement 13h33.

Quelqu'un pourrait-il gentiment me guider à ce sujet.

Je vous remercie beaucoup.

1voto

sss S Points 384

Utilisateurs de Laravel 5.6+, vous pouvez simplement faire

$posts = Post::whereDate('created_at', Carbon::today())->get();

Outre now() et today(), vous pouvez également utiliser yesterday() et tomorrow() et ensuite utiliser les éléments suivants:

startOfDay()/endOfDay()
startOfWeek()/endOfWeek()
startOfMonth()/endOfMonth()
startOfYear()/endOfYear()
startOfDecade()/endOfDecade()
startOfCentury()/endOfCentury()

OU

En utilisant le générateur de requêtes, utilisez la fonction par défaut CURDATE de MySQL pour récupérer tous les enregistrements du jour.

 $records = DB::table('users')->select(DB::raw('*'))
                  ->whereRaw('Date(created_at) = CURDATE()')->get();
    dd($record);

0voto

farooq Points 1287

Allez à

config -> app.php et changez 'timezone' => 'Asia/Dubai'

. Ensuite

php artisan config:cache

0voto

CHARITRA SHRESTHA Points 744

Vous pouvez trouver la configuration du fuseau horaire dans "config -> app.php" il suffit de changer 'timezone' => 'UTC', à 'timezone' => 'Asia/Dubai', et redémarrez votre XAMPP.

0voto

HRD Points 1

Que signifie la date actuelle pour vous? Parce que vous avez le fuseau horaire du serveur MySQL, votre paramètre de fuseau horaire Laravel et le paramètre de fuseau horaire de votre ordinateur ... Lorsque vous écrivez: Date (created_at) = Curdate (), Curdate () examine le fuseau horaire du serveur MySQL. Alors quelle est la "date actuelle" que vous voulez trouver? Rappelez-vous que chaque utilisateur dans le monde a sa propre "date locale actuelle" alors que la date stockée dans votre base de données MySQL ne sera qu'une date fixe (il est préférable d'être UTC pour plus de fiabilité ...)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X