Laravel Eloquent запрос следующий 1 элемент - PullRequest
0 голосов
/ 23 мая 2019

Какой самый чистый способ для меня запросить следующий 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) соответствует параметру?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...