rest — Как вы комбинируете ParseQuery :: orQueries с matchQuery, используя php parse-server sdk

Я перехожу от 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();

Заранее спасибо за любую помощь или указатели на то, что мне не хватает.

0

Решение

Вы можете использовать только matchesQuery для указателей. Для вашего случая вы должны использовать matchesKeyInQuery,

$query->matchesKeyInQuery("phostId", "objectId", $innerQuery);

замещать objectId с именем столбца идентификатора, который вы хотите сравнить.

Надеюсь это поможет 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]