public function listProductOption() { if (!Request::ajax()) { return App::abort(404); } $start = Input::has('start') ? (int) Input::get('start') : 0; $length = Input::has('length') ? Input::get('length') : 10; $search = Input::has('search') ? Input::get('search') : []; $productOptions = ProductOption::select('options.id', 'options.name', 'options.key', 'option_group_id', 'option_groups.name as option_group_name')->leftJoin('option_groups', 'options.option_group_id', '=', 'option_groups.id'); if (!empty($search)) { foreach ($search as $key => $value) { if (empty($value)) { continue; } if ($key == 'option_group_id') { $productOptions->where($key, (int) $value); } else { $value = ltrim(rtrim($value)); $productOptions->where($key, 'like', '%' . $value . '%'); } } } $order = Input::has('order') ? Input::get('order') : []; if (!empty($order)) { $columns = Input::has('columns') ? Input::get('columns') : []; foreach ($order as $value) { $column = $value['column']; if (!isset($columns[$column]['name']) || empty($columns[$column]['name'])) { continue; } $productOptions->orderBy('options.' . $columns[$column]['name'], $value['dir'] == 'asc' ? 'asc' : 'desc'); } } $count = $productOptions->count(); if ($length > 0) { $productOptions = $productOptions->skip($start)->take($length); } $arrOptions = $productOptions->get()->toArray(); $arrReturn = ['draw' => Input::has('draw') ? Input::get('draw') : 1, 'recordsTotal' => ProductOption::count(), 'recordsFiltered' => $count, 'data' => []]; if (!empty($arrOptions)) { foreach ($arrOptions as $option) { $arrReturn['data'][] = array(++$start, $option['id'], $option['name'], $option['key'], $option['option_group_id'], is_null($option['option_group_name']) ? '' : $option['option_group_name']); } } $response = Response::json($arrReturn); $response->header('Content-Type', 'application/json'); return $response; }