public function get_catalog() { $allowed = array('name_sparepart', 'part_number', 'sp_categories_id', 'base_price', 'price'); // add allowable columns to search on $sort = in_array(Input::get('sort'), $allowed) ? Input::get('sort') : 'name_sparepart'; // if user type in the url a column that doesnt exist app will default to id $order = Input::get('order') === 'desc' ? 'desc' : 'asc'; // default desc $keyword = Input::get('q'); $search = Input::get('search'); $spareparts = Sparepart::join('sp_categories as cat', 'cat.id', '=', 'spareparts.sp_categories_id')->join('sp_groups as g', 'g.id', '=', 'spareparts.sp_group_id')->order_by($sort, $order); $q = null; if (Input::has('q')) { $spareparts = $spareparts->where($search, 'like', '%' . $keyword . '%'); $q = '&search=' . $search . '&q=' . $keyword; } $spareparts = $spareparts->paginate(20, array('spareparts.id', 'name_sparepart', 'part_number', 'sp_categories_id', 'moving', 'base_price', 'price', 'satuan', 'isi_satuan', 'sp_category', 'sp_group')); $this->data['querystr'] = '&order=' . (Input::get('order') == 'asc' || null ? 'desc' : 'asc') . $q; $this->data['spareparts'] = $spareparts; $this->data['searchby'] = $search; $this->data['q'] = $keyword; $this->data['pagination'] = $spareparts->appends(array('search' => Input::get('search'), 'q' => Input::get('q'), 'sort' => Input::get('sort'), 'order' => Input::get('order')))->links(); return View::make('themes.modul.' . $this->views . '.catalog', $this->data); }