解析PHP SDK - 返回NULL或未定义值的记录

问题描述:

我有一些通过Parse PHP SDK存储的记录。 其中字段中有一个日期字段,用未定义的值初始化。解析PHP SDK - 返回NULL或未定义值的记录

在旅途中,如果我设置日期,然后想“取消”,该值可能会更改为实际日期或空值。我正在做的是将其设置为空。

问题是,当我想过滤设置日期和所有其他(在我的情况下,未定义和空值都应该是相同的,即“未设置”),我尝试一个查询过滤器类似于以下内容:

$query->equalTo("mydatefield", NULL); 

奇怪的是它只返回未定义的值,而不是NULL值。

在另一方面,当我使用

$query->notEqualTo("mydatefield", NULL); 

所需的记录都返回就好了。

任何想法如何完成获取null和undefined值?

在此先感谢。

你是对的,它似乎不适用于PHP库。同样的事情与Javascript库一起工作正常。

通过排除非空(或未定义)的值,您可以完成所需的操作。这里有一个例子:

use Parse\ParseQuery;  

//fetch objectIds of all data that is not null 
$query = new ParseQuery("tabledata"); 
$query = $query -> notEqualTo("mydatefield", null); 
$results = $query -> find(); 
$keys = array(); 

for ($i=0; $i<count($results); $i++){ 
    array_push($keys, $results[$i]-> getObjectId()); 
} 

//now fetch all records but the records with the null column 
$query2 = new ParseQuery("tabledata"); 
$query2 = $query2 -> notContainedIn("objectId", $keys); 
$results2 = $query2 -> find(); 
+0

谢谢abinop!虽然这不是实现我想要的最佳方式,但对我来说绝对是可行的。我希望parse.com团队将在未来的版本中处理这个问题。 – 2014-11-02 17:37:23

+0

现在还没有修复。非常感谢你,这件事让我疯狂...... – Daniel 2017-04-11 16:01:41

可以过滤与空字段的查询与ParseQuery类existsdoesNotExist方法。

$query->exists("mydatefield"); // returns rows that do not have null value for mydatefield key. 

$query->doesNotExist("mydatefield"); // returns rows that have null value for mydatefield key. 
+0

这个过滤器只会过滤未定义值的字段,而不是空字段。在解析你有null和未定义的值。该查询应该是“doesNotExists或等于null”,但我不知道如何广告该“或”。 – Daniel 2017-04-11 13:38:44