Получение последних 7 дней с помощью RethinkDB во время ()

Я уже несколько часов пытаюсь вернуть все результаты за последние 7 дней, используя RethinkDB и PHP.

Изучение документации на https://www.rethinkdb.com/docs/dates-and-times/javascript/ Я обнаружил, что наиболее подходящей функцией RethinkDB будет during(),

Ниже мой код, который я понял, что эта задача намного сложнее, чем кажется. Я пытался использовать DateTime из PHP прямо в during, но это также не было успешным.

$sevenago = new DateTime('7 days ago');
$sevenago->setTimeZone(new DateTimeZone('Asia/Kolkata'));
$sevenago = date_format($sevenago, 'U');
$now = new DateTime();
$now->setTimeZone(new DateTimeZone('Asia/Kolkata'));
$now = date_format($now, 'U');

$ordersLastWeek = r\table("orders")->filter(function($doc) {
return $doc('status')->eq('shipped')
->rAnd($doc('time')->during(r\epochTime($sevenago), r\epochTime($now)));
})->run($conn);

time Поле хранится следующим образом (стандартный тип RethinkDB DateTime):

{"$reql_type$":"TIME","epoch_time":1509557927.661,"timezone":"+00:00"}

Любая помощь будет оценена.

1

Решение

Попробуй это:

$ordersLastWeek = r\table("orders")->filter(function($doc) use ($sevenago, $now) {
return $doc('status')->eq('shipped')->rAnd($doc('time')->during(r\epochTime($sevenago), r\epochTime($now)));
})->run($conn);

В вашем коде вы забыли использовать use ($sevenago, $now) для функции фильтра.

1

Другие решения

$ordersLastWeek = r\table("orders")->filter(function($doc) {
return $doc('status')->eq('shipped')
->rAnd(($doc('time') > r\epoch_time($sevenago)));
})->run($conn);

Вы пробовали это. Надеюсь, что это работает.

0

По вопросам рекламы [email protected]