diff --git a/src/Searcher.php b/src/Searcher.php index 5cf3917..f3dd192 100755 --- a/src/Searcher.php +++ b/src/Searcher.php @@ -325,17 +325,30 @@ public function getSearch($search, $orderBy = null, $orderAs = null) if(!$this->subJoined){ - if(isset($orderField) && isset($orderDir)) - { - $query = $query->orderBy($orderField, $orderDir); - } - elseif(count($order) > 0) + + if(count($order) > 0) { foreach($order as $curOrder) { - $query = $query->join($curOrder, $query->getModel()->getTable().'.'.$curOrder.'_id', '=', $curOrder.'.id')->orderBy($curOrder.'.'.$orderField, $orderDir); + $ent_key = $this->getEntityClass($curOrder); + + if($ent_key == null) + { + return new MessageBag([ + 'messages' => [ + //@TODO: lets add more clarity here later, for now this will do. + 'Entity does not exist: '.$curOrder + ] + ]); + } + $ent = (new $ent_key); + $query = $query->join($ent->getTable(), $query->getModel()->getTable().'.'.$ent->getTable().'_id', '=', $ent->getTable().'.id')->orderBy($ent->getTable().'.'.$orderField, $orderDir); } } + elseif(isset($orderField) && isset($orderDir)) + { + $query = $query->orderBy($orderField, $orderDir); + } $this->subJoined = false; } @@ -344,6 +357,7 @@ public function getSearch($search, $orderBy = null, $orderAs = null) if(!empty($results)) { + // print_r($results->toSql());die; return $results; } else @@ -426,7 +440,19 @@ function ($inner) use($field, $where, $value, $rel, $relations, $last, $curOrder * which is needing to me migrated to configurations within models and use this as a fallback. */ if(!empty($curOrder)){ - $query = $query->join($curOrder, $query->getModel()->getTable().'.'.$curOrder.'_id', '=', $curOrder.'.id')->orderBy($curOrder.'.'.$orderField, $orderDir); + $ent_key = $this->getEntityClass($curOrder); + + if($ent_key == null) + { + return new MessageBag([ + 'messages' => [ + //@TODO: lets add more clarity here later, for now this will do. + 'Entity does not exist: '.$curOrder + ] + ]); + } + $ent = (new $ent_key); + $query = $query->join($ent->getTable(), $query->getModel()->getTable().'.'.$ent->getTable().'_id', '=', $ent->getTable().'.id')->orderBy($ent->getTable().'.'.$orderField, $orderDir); $this->subJoined = true; } return $query;