Я не уверен, что здесь происходит, но я пытаюсь получить некоторые бюджеты из объекта modx / xpdo и получить неожиданные результаты. Из приведенного ниже кода оба цикла foreach возвращают одинаковые результаты [первого вызова getMany. 2 элемента], если я переключаю порядок вызовов getmany, я получаю только один результат для обоих циклов foreach.
$tipa = $this->modx->getObject('Tipa', array('id' => $id, 'token' => $token));// should retrieve two objects
$tipa_sub_budgets = $tipa->getMany('TipaBudget', array('budget_type_id:!=' => '999'));
foreach($tipa_sub_budgets as $sb){
echo $sb->get('id');
}
// should retrieve one object
$tipa_primary_budgets = $tipa->getMany('TipaBudget', array('budget_type_id' => '999'));
foreach($tipa_primary_budgets as $tb){
echo $tb->get('id');
}
Я не уверен, что здесь происходит. Как правильно выбрать два набора объектов из $tipa
объект?
Я думаю, тогда как xPDO::getObject()
могут быть переданы критерии в виде массива или экземпляра xPDOCriteria
, xPDOObject::getMany()
ожидает только случай xPDOCriteria
это означает, что массив не будет работать.
Попробуйте передать экземпляр xPDOCriteria
вот так…
$criteria = $this->modx->newQuery("TipdaBudget"); // classname, not the alias
$criteria->where(array("budget_type_id:!=" => 999));
$tipa_sub_budgets = $tipa->getMany("TipaBudget", $criteria);
Других решений пока нет …