问题描述
我需要创建 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
- bad_callbacks_sent
- 凡确认
我从 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 对它们的类型非常敏感。
希望我能帮您节省一些时间。