2017-11-01 10 views
1

RethinkDBとPHPを使用して、過去7日間のすべての結果を返すようにしています。()内のRethinkDBで過去7日間の取得

https://www.rethinkdb.com/docs/dates-and-times/javascript/での資料の調査最も適切なRethinkDB関数がduring()であることがわかりました。

以下は私のコードで、この作業は現実のものよりもはるかに難しいと認識しています。私はduringにPHPのDateTimeを直接使用しようとしましたが、これも成功しませんでした。任意の助けを理解されるであろう

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

$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型)を次のように格納されます。

答えて

1

はこれを試してみてください。

+0

うわー。あまりにも遅い夜です。非常に良い、あなたが正しい、私はそれらの変数を設定することを忘れました。 'epochTime'を無視して、PHPの' DateTime'を直接使用することもできます。http://codepad.org/QiTnImyo – Dean

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

これを試しましたか。それがうまくいくことを望みます。あなたは、フィルタ機能のためuse ($sevenago, $now)を使用するのを忘れて、あなたのコードでは

$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); 

+0

残念ながらそれは動作しません。私は 'r \ epochTime'で試しましたが、' r \ epoch_time'はPHP RQLの未定義関数であることにも注意してください。 – Dean

関連する問題