如何在 PHP 中链接 RethinkDB 过滤器

问题描述

我需要创建 1 个以上的过滤器来运行查询以减少找到的结果数量

我正在尝试使用 RethinkDB for PHP 一次执行这 3 个查询 here

我运行的代码是:

    $query = \r\table('payments')->filter(
        \r\row('forwarded')->eq('1'),\r\row('bad_callbacks_sent')->lt("1"),\r\row('confirmations')->le('7')
    )->run($this->conn);

我刚刚也尝试执行以下操作,但它不起作用(它只是显示一个参数的所有位置 - where forwarded = 1。它只执行第一个过滤器:

     $query = \r\table('payments')
    ->filter(\r\row('forwarded')->eq('1'))
    ->filter(\r\row('bad_callbacks_sent')->lt("6"))
    ->filter(\r\row('confirmations')->le("7"))
    ->run($this->conn);

但它似乎并没有按照我的要求去做。 我需要让它得到:

  1. 哪里转发 == 1
  2. bad_callbacks_sent
  3. 凡确认

我从 here 中找到了以下代码,这表明您可以在 js 中链接它们,但我对 PHP 感到疑惑:

r.db('items').table('tokens')
.filter(r.row('valid_to').gt(r.Now()))
.filter(r.row["processed"] == False)

有什么想法吗?

解决方法

好吧,事实证明,问题不在于我的新代码:

    $query = \r\table('payments')
    ->filter(\r\row('forwarded')->eq('1'))
    ->filter(\r\row('bad_callbacks_sent')->lt(6))
    ->filter(\r\row('confirmations')->le(7))
    ->run($this->conn);

但与变量类型。 在我的数据库中,它被存储为一个 int 但我试图通过 (le("7")) 一个字符串来读取它。

上面的代码工作正常:) 它允许您在 retihnkdb for php 中过滤 1 个以上的查询。

确保检查数据库中的变量类型! RethinkDB 对它们的类​​型非常敏感。

希望我能帮您节省一些时间。