Rumah  >  Soal Jawab  >  teks badan

Kaedah Laravel untuk menggunakan nilai lajur lain sebagai parameter fungsi dalam pernyataan Where

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粉974462439P粉974462439271 hari yang lalu443

membalas semua(1)saya akan balas

  • P粉593536104

    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');

    balas
    0
  • Batalbalas