Запрос Laravel, где дата более поздняя, ​​чем текущее время - PullRequest
0 голосов
/ 30 мая 2018

Я использую красноречивую модель Laravel.Я хочу добавить условие запроса where start_time later than now.

Например:

Model::whereAfterNow('start_time')->all()

Можете ли вы помочь мне ??

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

похоже, вам нужна область запроса (https://laravel.com/docs/5.6/eloquent#local-scopes).

при условии, что 'start_time' - это свойство модели (поле базы данных), содержащее некоторое представление времени, и вы хотите область, которая возвращаетвсе модели where 'start_time' later than now ...

От того, как вы структурируете свой код, зависит, в каком формате хранятся ваши даты в вашей базе данных.

Например, если вы используете метки времени эпохи, то в вашемModel.php:

public function scopewhereAfterNow($query)
{
    return $query->where('start_time', '>', \Carbon\Carbon::now()->timestamp);
}

или вы можете использовать фасад БД:

public function scopewhereAfterNow($query)
{
    return $query->where('start_time', '>', DB::raw('unix_timestamp(NOW())'));
}

, который вы можете назвать как: $results = Model::whereAfterNow()->get();

0 голосов
/ 30 мая 2018

Если 'start_time' возвращает строку DateTime, вы можете попробовать:

Model::where('start_time', '>', Carbon::now()->toDateTimeString())->get();

Если 'start_time' только возвращает время, вы можете попробовать:

Model::where('start_time', '>', Carbon::now()->toTimeString())->get();

Просто убедитесь, что вы включили

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