首頁  >  問答  >  主體

在Where語句中使用另一列的值作為函數參數的Laravel方法

我有一個 Laravel PHP 遊戲的 Round 模型。每回合都有一個開始時間 (DATETIME) 和以分鐘為單位的持續時間 (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

一場比賽會有多輪,如果 start_time uration > Carbon::now() 則一輪結束

現在我似乎不知道如何從仍在進行的遊戲中檢索所有回合

我想到了類似的事情,但顯然這不起作用,因為我無法將「duration」列放入 subMinutes 函數中

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


#
P粉974462439P粉974462439271 天前440

全部回覆(1)我來回復

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

    回覆
    0
  • 取消回覆