Вызов неопределенного метода Illuminate\Database\Query\Builder::exchanges()

ОШИБКА: BadMethodCallException в строке Builder.php 2435: вызов неопределенного метода Illuminate\Database\Query\Builder::exchanges()

Есть две таблицы, названные как таблица EXCHANGES и таблица FINALTRADES.

Таблица бирж имеет поле START_TIME (в формате: 00:00:00), а таблица финальных торгов имеет exchange_id.

Я хочу подсчитывать только те записи, которые идут между start_time до start_time+1hrs из таблицы заключительных сделок. ПРИМЕР: Если start_time имеет 09:15:00, то считайте только записи с 09:15:00 до 10:15:00.

Функция:

public function getCountHour() {
       $user_id = Auth::user()->id;
       $countTrades = FinalTrade::where('user_id', '=', $user_id)
            ->exchanges()
            ->where('start_time', '>=', $your_desired_time)
            ->where('start_time' , '<=' , strtotime($your_desired_time) + 60*60)
            ->count();

                return response()->json($countTrades);

    }

Отношение, данное модели FnalTrade:

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

оба стола ЭКРАН

1 ответ

Решение

Следующее должно сделать трюк:

$countTrades = FinalTrade::whereUserId(Auth::id())
  ->whereHas('exchanges', function($query) use ($your_desired_time) {
    $query
      ->where('start_time', '>=', $your_desired_time)
      ->where('start_time' , '<=' , strtotime($your_desired_time) + 60*60);
})
->count();
Другие вопросы по тегам