我们能够在PHP (客户机或JavaScript )上运行null不等式,但是我们不能在PHP中运行。在我看来,这似乎是一个后端特性,已经得到了Firestore的支持,但是在PHP中引发了一个错误。
->where('preorders', '!=', null)
Uncaught InvalidArgumentException: Null and NaN are allowed only with operator EQUALS.
而just中的等价物工作得很好。
query(q, where('preorders', '!=', null))
既然我不能在谷歌的PHP回购这里中打开一个问题,我们有什么办法可以找到不可能的原因吗?
发布于 2022-03-08 11:58:03
文档说:
“字段设置为任何值时都存在,包括空的string (" ")
、null
和NaN
(不是数字)。请注意,空字段值与!=
子句不匹配,因为x != null
的计算结果为未定义的。“
:是的,即使我们添加了空字符串、null (在Firestore
中支持的数据类型)或NaN,也并不意味着字段不存在。它肯定存在,并持有其中一个价值观。当我们比较x != null
中的where
子句时,x != null
会计算未定义的字段,但是对于不存在的字段。根据这个固定恢复支持的数据类型,未定义在Firestore中不是一个受支持的数据类型。
因此,我们可以比较.where(x!=null)
并支持它,但是对于不存在的字段,它的计算结果是未定义的。
正如类似的线程中所提到的,Firestore中的v7.21.0版本发布支持7.21.0版本的带有where
子句的!=
操作符
但是,在深入了解文档时,我发现php5支持!=
操作符,就像您在代码段中看到的那样,但是php8还不支持!=
操作符,解决方法是使用not-in
而不是代码段中所示的。
也许您正在尝试使用php版本>5,因此出现了错误。这里已经有一个公开发行,在GitHub中。您可以按照链接进行更新和更改,也可以创建一个新的请求这里。
https://stackoverflow.com/questions/71379182
复制相似问题