/** * Format the value returned from rec_query() into an array radix. * * @param Doctrine_Query $q * @return array $radix */ protected function format_query_radix(Doctrine_Query $q) { $q2 = $q->copy()->select('org_id'); $rs = $q2->fetchArray(); // also select all parent orgs $ids = array(); foreach ($rs as $org) { $parent_ids = Organization::get_org_parents($org['org_id']); $ids = array_merge($ids, $parent_ids); $ids[] = $org['org_id']; } $q->orWhereIn('o.org_id', $ids); $q->removeDqlQueryPart('limit'); // now get the radix $this->_fields['org_parent_id'] = 1; $this->_fields['org_id'] = 1; $radix = parent::format_query_radix($q); // display organizations as a tree return $this->get_tree_data($radix); }
protected function addForeignKeyQuery(Doctrine_Query $query, $field, $value) { $fieldName = $this->getFieldName($field); if (is_array($value)) { $query->orWhereIn(sprintf('%s.%s', $query->getRootAlias(), $fieldName), $value); } else { $query->addWhere(sprintf('%s.%s = ?', $query->getRootAlias(), $fieldName), $value); } }
protected function addForeignKeyQuery(Doctrine_Query $query, $field, $value) { $fieldName = $this->getFieldName($field); if (is_array($value)) { $query->orWhereIn('r.' . $fieldName, $value); } else { $query->addWhere('r.' . $fieldName . ' = ?', $value); } }