使用 RethinkDB during() 检索最近 7 天
Retrieving the last 7 days with RethinkDB during()
我已经尝试了几个小时来尝试 return 过去 7 天的所有结果,使用 RethinkDB 和 PHP。
查看 https://www.rethinkdb.com/docs/dates-and-times/javascript/ 的文档,我发现最合适的 RethinkDB 函数是 during()
。
下面是我的代码,我已经意识到这个任务比看起来要难得多。我曾尝试将 PHP 中的 DateTime
直接用于 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"}
如有任何帮助,我们将不胜感激。
$ordersLastWeek = r\table("orders")->filter(function($doc) {
return $doc('status')->eq('shipped')
->rAnd(($doc('time') > r\epoch_time($sevenago)));
})->run($conn);
你试过这个吗?希望有用。
试试这个:
$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)
作为过滤功能。
我已经尝试了几个小时来尝试 return 过去 7 天的所有结果,使用 RethinkDB 和 PHP。
查看 https://www.rethinkdb.com/docs/dates-and-times/javascript/ 的文档,我发现最合适的 RethinkDB 函数是 during()
。
下面是我的代码,我已经意识到这个任务比看起来要难得多。我曾尝试将 PHP 中的 DateTime
直接用于 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"}
如有任何帮助,我们将不胜感激。
$ordersLastWeek = r\table("orders")->filter(function($doc) {
return $doc('status')->eq('shipped')
->rAnd(($doc('time') > r\epoch_time($sevenago)));
})->run($conn);
你试过这个吗?希望有用。
试试这个:
$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)
作为过滤功能。