在Where語句中使用另一列的值作為函數參數的Laravel方法
P粉974462439
P粉974462439 2023-12-27 17:39:22
0
1
534

我有一個 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粉974462439
P粉974462439

全部回覆(1)
P粉593536104

您正在 SQL 中尋找此內容:

WHERE start_time > CURRENT_TIMESTAMP - INTERVAL duration SECOND

或相同的,在 Eloquent 中:

$query->whereRaw(sql: 'WHERE start_time > CURRENT_TIMESTAMP - INTERVAL duration SECOND');
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板