public function search($input) { $query = BarcodeProcess::query(); $query->select('barcode_processes.*'); $query->leftJoin('shelves', 'barcode_processes.shelf_id', '=', 'shelves.id'); $columns = Schema::getColumnListing('barcode_processes'); $attributes = array(); foreach ($columns as $attribute) { $attributes[$attribute] = null; if (isset($input[$attribute]) and !empty($input[$attribute])) { $query->where($attribute, $input[$attribute]); $attributes[$attribute] = $input[$attribute]; } } /** * Filter */ $this->filter($input, $query); /** * Get count */ $total = $query->count(); /** * Pagination */ $this->pagination($input, $query); /** * Order */ $this->order($input, $query); return [$query->get(), $attributes, 'total' => $total]; }