在特定时间之间计算列查询

Count Columns query with between specific time

有两个 table,分别命名为 exchanges tablefinaltrades table .

交易所 table 有 START_TIME 字段(格式:00:00:00)。

另一个 finaltrades table 有 exchange_id.

我只想计算距离最终交易 table start_time 到 start_time+1 小时之间的条目。 例如: 如果 start_time 有 09:15:00,则在 09:15:00 到 10:15:00 之间计数仅记录。

$Count_Trades = FinalTrade::where('user_id', '=', $user_id)
                             ->whereColumn('start_time', '+', 01:00:00)
                             ->count();

如何按关系更正此代码?

Exchnages table

finaltrade table

您应该定义 FinalTrade 模型和交易所模型之间的关系。

这定义了 FinalTrade 模型中的关系。

public function exchanges(){
    return $this->hasOne('App\EXCHANGE_MODEL_NAME', 'id', 'exchange_id');
}

您可以找到有关关系的更多详细信息 here

现在您可以使用此查询查找您的记录

$countTrades = App\FinalTrade::where('user_id', '=', $user_id)->exchanges()
    ->where('start_time', '>=', $your_desired_time)->where('start_time' , '<=' , strtotime($your_desired_time) + 60*60)->count();