| @@ 38-53 (lines=16) @@ | ||
| 35 | * |
|
| 36 | * @return array |
|
| 37 | */ |
|
| 38 | public function findBy(Filter $filter = null, Sort $sort = null, Fields $fields = null) |
|
| 39 | { |
|
| 40 | $model = self::$instance; |
|
| 41 | $query = $model->query(); |
|
| 42 | $columns = ($fields) ? $fields->get() : ['*']; |
|
| 43 | ||
| 44 | if ($filter) { |
|
| 45 | EloquentFilter::filter($query, $filter); |
|
| 46 | } |
|
| 47 | ||
| 48 | if ($sort) { |
|
| 49 | EloquentSorter::sort($query, $sort); |
|
| 50 | } |
|
| 51 | ||
| 52 | return $query->get($columns)->toArray(); |
|
| 53 | } |
|
| 54 | ||
| 55 | /** |
|
| 56 | * Returns all instances of the type meeting $distinctFields values. |
|
| @@ 64-80 (lines=17) @@ | ||
| 61 | * |
|
| 62 | * @return array |
|
| 63 | */ |
|
| 64 | public function findByDistinct(Fields $distinctFields, Filter $filter = null, Sort $sort = null) |
|
| 65 | { |
|
| 66 | $model = self::$instance; |
|
| 67 | $query = $model->query(); |
|
| 68 | ||
| 69 | $columns = (count($fields = $distinctFields->get()) > 0) ? $fields : ['*']; |
|
| 70 | ||
| 71 | if ($filter) { |
|
| 72 | EloquentFilter::filter($query, $filter); |
|
| 73 | } |
|
| 74 | ||
| 75 | if ($sort) { |
|
| 76 | EloquentSorter::sort($query, $sort); |
|
| 77 | } |
|
| 78 | ||
| 79 | return $query->getQuery()->distinct()->get($columns); |
|
| 80 | } |
|
| 81 | ||
| 82 | /** |
|
| 83 | * Returns the total amount of elements in the repository given the restrictions provided by the Filter object. |
|