Rumah > Soal Jawab > teks badan
Saya mempunyai model Bulat untuk permainan PHP Laravel. Setiap pusingan mempunyai masa mula (DATETIME) dan tempoh dalam minit (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
Sesuatu permainan akan mempunyai beberapa pusingan, jika start_time +uration > Carbon::now()
maka satu pusingan tamat
Sekarang saya nampaknya tidak dapat memikirkan cara untuk mendapatkan semula semua pusingan daripada permainan yang masih berlangsung
Saya memikirkan sesuatu yang serupa, tetapi nampaknya itu tidak berfungsi kerana saya tidak boleh meletakkan lajur "tempoh" ke dalam fungsi subMinutes
return $game->whereHas('rounds', function ($query) { $query->where('start_time', '>', Carbon::now()->subMinutes(duration)); })->first();
P粉5935361042023-12-28 11:43:13
Anda sedang mencari ini dalam SQL:
WHERE start_time > CURRENT_TIMESTAMP - INTERVAL duration SECOND
atau setara, dalam Eloquent:
$query->whereRaw(sql: 'WHERE start_time > CURRENT_TIMESTAMP - INTERVAL duration SECOND');