Я перехожу от REST API в своем PHP-коде и преобразую в php sdk для разбора.
У меня возникли проблемы с преобразованием этого запроса REST API в правильный синтаксис для синтаксического анализа php-sdk, и я мог использовать несколько указателей.
Это рабочий запрос REST API.
where=
{"phostId":
{"__type":"Pointer","className":"Hosts","objectId":"'.$hostObjId.'"},
"isCompany":false,
"expunged":{"$nin":[true]},
"$or":[
{"endDate":
{"$gte":
{
"__type":"Date",
"iso":"'.$now.'"}
}
},
{"isPerm":true}
]
}
&keys=pvisitorId,company,isPerm,startDate,endDate,name
&include=pvisitorId&order=-name';
Я могу запросить на основе указателя без проблем, но я не могу понять, как работать в операторе OR.
Это то, что я до сих пор.
//Query the pointer for an object id matching our user session id
$innerQuery = new ParseQuery("Hosts");
$innerQuery->equalTo("objectId",$_SESSION['host_object_id'] );
//Building two queries used for the OR condition
$endDate = new ParseQuery("Authorizations");
$endDate->greaterThan("endDate", $date);
$isPerm = new ParseQuery("Authorizations");
$isPerm->equalTo("isPerm", True);
//create primary query
$query = new ParseQuery("Authorizations");
//set filters
$query->equalTo("isCompany",False);
$query->notEqualTo("expunged",True);
////This is what I am trying to add to $query just not sure how to do it.
$mainQuery = ParseQuery::orQueries([$endDate, $isPerm]);
$results1 = $mainQuery->find();
//Sort, Limit, add InnerQuery
$query->addDescending("name");
$query->limit(1);
$query->matchesQuery("phostId", $innerQuery);
// All results:
$results = $query->find();
Заранее спасибо за любую помощь или указатели на то, что мне не хватает.
Вы можете использовать только matchesQuery
для указателей. Для вашего случая вы должны использовать matchesKeyInQuery
,
$query->matchesKeyInQuery("phostId", "objectId", $innerQuery);
замещать objectId
с именем столбца идентификатора, который вы хотите сравнить.
Надеюсь это поможет 🙂
Других решений пока нет …