/** * @param DataObject $obj * @param array $params * @param int|array $sort * @param int|array $limit * @param string $relationName * @return SQLQuery|boolean */ protected function getObjectRelationQuery($obj, $params, $sort, $limit, $relationName) { if ($obj->hasMethod("{$relationName}Query")) { // @todo HACK Switch to ComponentSet->getQuery() once we implement it (and lazy loading) $query = $obj->{"{$relationName}Query"}(null, $sort, null, $limit); $relationClass = $obj->{"{$relationName}Class"}(); } elseif ($relationClass = $obj->many_many($relationName)) { // many_many() returns different notation $relationClass = $relationClass[1]; $query = $obj->getManyManyComponentsQuery($relationName); } elseif ($relationClass = $obj->has_many($relationName)) { $query = $obj->getComponentsQuery($relationName); } elseif ($relationClass = $obj->has_one($relationName)) { $query = null; } else { return false; } // get all results return $this->getSearchQuery($relationClass, $params, $sort, $limit, $query); }