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();
Anda sedang mencari ini dalam SQL:
atau setara, dalam Eloquent: