/** * doFind * * @param array $conditions * @param array $orders * @param int $start * @param int $limit * * @return mixed|void */ protected function doFind(array $conditions, array $orders, $start, $limit) { // Do find first $dataset = parent::doFind($conditions, $orders, $start, $limit); // Loop the relation mapper. foreach ($this->relations as $field => $relation) { // Loop each data. foreach ($dataset as &$data) { // Prepare sub conditions $conditions = array(); // Find relation data to this field. foreach ($relation['relations'] as $left => $right) { $conditions[$right] = $data->{$left}; } $data->{$field} = $relation['table']->findOne($conditions); } } return $dataset; }