У меня есть некоторые записи, хранящиеся через Parse PHP SDK.
Среди полей есть поле Date, которое инициализируется неопределенным значением.
На ходу это значение может измениться либо на реальную дату, либо на нулевое значение, в случае, если я установил дату, а затем хочу ее «сбросить». То, что я делаю, это установить его как ноль.
Проблема в том, что, когда я хочу отфильтровать установленные даты и все остальные (в моем случае и неопределенные, и нулевые значения должны быть одинаковыми, т. Е. «Неустановленными»), я пытаюсь применить фильтр запросов, подобный следующему:
$query->equalTo("mydatefield", NULL);
Странная вещь в том, что он возвращает только неопределенные значения, а не NULL.
С другой стороны, когда я использую
$query->notEqualTo("mydatefield", NULL);
все нужные записи возвращаются просто отлично.
Любая идея, как добиться получения как нулевых, так и неопределенных значений?
Заранее спасибо.
Вы правы, это не похоже на работу с библиотекой 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();
Вы можете фильтровать запросы с пустыми полями с помощью exists
а также doesNotExist
методы класса ParseQuery.
$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.