Какой самый чистый способ для меня запросить следующий 1 элемент в отношениях laravel?
У меня есть 2 модели, Пользователи и действия (1 пользователь имеет много действий).
Действия должны иметь дату, поэтому, когда кто-то ищет дату, я хочу, чтобы поиск выполнял ТОЛЬКО запрос на следующую дату действия, а другие - нет.
Так, например, если у меня есть 3 действия в эти даты
25/04/2019
26/05/2019
30/06/2019
и кто-то ищет действия после 01/05/2019
, он вернет NULL
, потому что следующее доступное действие не раньше этой даты?
Вот мой код
Действие пользователя Отношения
public function nextAction(){
return $this->hasOne('App\Models\Actions', 'user_id', 'id')
->where('complete', 0)
->orderBy('action_date', 'ASC')->limit(1);
}
Получить следующий запрос
$users = $users->whereHas('nextAction',function($userDateFrom){
$userDateFrom->where('user_actions.action_date', '>=', Carbon::createFromFormat('d/m/Y', request()->filters['datefrom'])->format('Y-m-d H:i:s'));
});
Поскольку действия пользователя превышают 01/05/2019
, он возвращает пользователя.
Как я могу вернуть пользователя, только если действие NEXT 1 (order by action_date asc) соответствует параметру?