2014-09-29 69 views
3

我有一些通過Parse PHP SDK存儲的記錄。 其中字段中有一個日期字段,用未定義的值初始化。解析PHP SDK - 返回NULL或未定義值的記錄

在旅途中,如果我設置日期,然後想「取消」,該值可能會更改爲實際日期或空值。我正在做的是將其設置爲空。

問題是,當我想過濾設置日期和所有其他(在我的情況下,未定義和空值都應該是相同的,即「未設置」),我嘗試一個查詢過濾器類似於以下內容:

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

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

在另一方面,當我使用

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

所需的記錄都返回就好了。

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

在此先感謝。

回答

2

你是對的,它似乎不適用於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

-1

可以過濾與空字段的查詢與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