Heim > Fragen und Antworten > Hauptteil
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粉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');