/** * @return array */ protected function asyncTable() { $columns = $this->modelItem->getColumns(); $params = []; $params['offset'] = Input::get('start'); $params['limit'] = Input::get('length'); $params['search'] = Input::get('search.value'); $orderData = Input::get('order')[0]; $columnToOrder = $columns[intval($orderData['column'])]; $params['orderBy'] = $columnToOrder->getName(); if (method_exists($columnToOrder, 'getOrderBy')) { $params['orderBy'] = $columnToOrder->getOrderBy(); } $params['orderDest'] = $orderData['dir']; $data = $this->modelRepository->tableData($params); $rowsCount = count($data['rows']); $result = []; $result['draw'] = Input::get('draw'); $result['recordsTotal'] = $data['totalCount']; $result['recordsFiltered'] = $data['totalCount']; $result['data'] = []; foreach ($data['rows'] as $row) { $_row = []; foreach ($columns as $column) { $_row[] = $column->render($row, $rowsCount); } $result['data'][] = $_row; } return $result; }
/** * @param WithJoinEloquentBuilder $originalQuery * @param $search * @internal param $query */ protected function addSearchToQuery(WithJoinEloquentBuilder $originalQuery, $search) { $originalQuery->getQuery()->whereNested(function (Builder $query) use($search, $originalQuery) { $table = $this->instance->getTable(); $columns = $this->getColumns($table); foreach ($columns as $column => $type) { $field = implode('.', [$table, $column]); if ($this->isDateColumn($type)) { $field = DB::raw('convert(' . $field . ' using utf8)'); } $query->orWhere($field, 'like', $search); } /** @var ColumnInterface[] $displayColumns */ $displayColumns = $this->modelItem->getColumns(); foreach ($displayColumns as $column) { $name = $column->getName(); if (strpos($name, '.') !== false && $this->inWith($name, $originalQuery) && $this->modelItem->isWithJoinEnabled()) { $query->orWhere($name, 'like', $search); } } }); }
/** @test */ public function it_stores_columns() { $column = Mockery::mock('\\SleepingOwl\\Admin\\Columns\\Column\\ColumnString'); $modelItem = new ModelItem('\\Foo\\Bar\\Model'); $modelItem->addColumn($column); $this->assertTrue(in_array($column, $modelItem->getColumns()), 'Column havent been added to model item.'); }