/** * Queries for has one relation fields with a link model to self * @param ModelQuery $query Query for the has many data * @param string $fieldName Name of the field which will contain the has many data * @param array $foreignKeys Array with ModelField objects * @param integer $id Primary key of the data which will contain the has many data * @return array Model query result for the has many field */ private function queryHasManyWithLinkModelToSelf(ModelQuery $query, ModelMeta $meta, $fieldName, array $foreignKeys, $id) { $order = $meta->getRelationOrder($fieldName); if ($order != null) { $query->addOrder($order); } $result = array(); $queryResult = $query->query(); foreach ($queryResult as $data) { foreach ($foreignKeys as $foreignKey) { $foreignKey = $foreignKey->getName(); if ($data->{$foreignKey}->id != $id) { break; } } $result[$data->{$foreignKey}->id] = $data->{$key}; } return $result; }