Maison  >  Questions et réponses  >  le corps du texte

Méthode Laravel pour utiliser la valeur d'une autre colonne comme paramètre de fonction dans l'instruction Where

J'ai un modèle Round pour un jeu PHP Laravel. Chaque tour a une heure de début (DATETIME) et une durée en minutes (INT) :

id | game_id  | duration | start_time
1  | 3        | 40       | 2022-06-22 19:29:26
2  | 3        | 20       | 2022-06-24 00:02:55
3  | 1        | 10       | 2022-06-25 10:56:05

Un jeu aura plusieurs tours, si start_time +uration > Carbon::now() alors un tour se termine

Maintenant, je n'arrive pas à comprendre comment récupérer tous les tours d'une partie qui est toujours en cours

J'ai pensé à quelque chose de similaire, mais apparemment cela ne fonctionne pas car je ne peux pas mettre la colonne "durée" dans la fonction subMinutes

return $game->whereHas('rounds', function ($query) {
            $query->where('start_time', '>', Carbon::now()->subMinutes(duration));
        })->first();


P粉974462439P粉974462439271 Il y a quelques jours444

répondre à tous(1)je répondrai

  • P粉593536104

    P粉5935361042023-12-28 11:43:13

    Vous recherchez ceci en SQL :

    WHERE start_time > CURRENT_TIMESTAMP - INTERVAL duration SECOND

    ou équivalent, en Eloquent :

    $query->whereRaw(sql: 'WHERE start_time > CURRENT_TIMESTAMP - INTERVAL duration SECOND');

    répondre
    0
  • Annulerrépondre