Heim  >  Fragen und Antworten  >  Hauptteil

Laravel-Methode zur Verwendung des Werts einer anderen Spalte als Funktionsparameter in der Where-Anweisung

Ich habe ein Round-Modell für ein Laravel-PHP-Spiel. Jede Runde hat eine Startzeit (DATETIME) und eine Dauer in Minuten (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

Ein Spiel hat mehrere Runden, wenn start_time +uration > Carbon::now() dann endet eine Runde

Jetzt kann ich anscheinend nicht herausfinden, wie ich alle Runden eines noch laufenden Spiels abrufen kann

Ich habe mir etwas Ähnliches überlegt, aber anscheinend funktioniert das nicht, weil ich die Spalte „Dauer“ nicht in die SubMinutes-Funktion einfügen kann

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


P粉974462439P粉974462439271 Tage vor442

Antworte allen(1)Ich werde antworten

  • P粉593536104

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

    您正在 SQL 中查找此内容:

    WHERE start_time > CURRENT_TIMESTAMP - INTERVAL duration SECOND

    或相同的,在 Eloquent 中:

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

    Antwort
    0
  • StornierenAntwort