/** * @param null $params * @return array */ public function tableData($params = null) { $with = $this->modelItem->getWith(); if ($this->modelItem->isWithJoinEnabled()) { $baseQuery = $this->instance->newQuery()->getQuery(); /** @var WithJoinEloquentBuilder $query */ $query = new WithJoinEloquentBuilder($baseQuery); if ($this->modelItem->isAsync()) { $query->references($with); } } else { $query = $this->instance->newQuery(); } $query->setModel($this->instance)->with($with); $query = $this->instance->applyGlobalScopes($query); $this->applyFilters($query); $totalCount = $query->count(); if (!is_null($params)) { if (trim($params['search']) != '') { $search = '%' . $params['search'] . '%'; $this->addSearchToQuery($query, $search); } $totalCount = $query->count(); if ($params['limit'] != -1) { $query->offset($params['offset']); $query->limit($params['limit']); } if (!$this->instance instanceof ModelWithOrderFieldInterface) { $query->getQuery()->orders = null; } $query->orderBy($params['orderBy'], $params['orderDest']); } $rows = $query->get(); return compact('rows', 'totalCount'); }
/** * @return View */ public function table() { if ($result = $this->checkCustomActionCall()) { return $result; } if (Input::get('datatable_request')) { return $this->asyncTable(); } $this->queryState->save(); $columns = $this->modelItem->getColumns(); $unsortableColumns = []; $nameToSequanceNumber = []; foreach ($columns as $i => $column) { $nameToSequanceNumber[$column->getName()] = $i; if ($column->isSortable() == false) { $unsortableColumns[] = $i; } } $viewFilters = $this->modelItem->getViewFilters(); $jsFilters = []; foreach ($viewFilters as $i => $filter) { $filterData = ['type' => $filter->getFilterType(), 'sequanceNumber' => isset($nameToSequanceNumber[$filter->getName()]) ? $nameToSequanceNumber[$filter->getName()] : null]; if ($filter->getFilterType() == \SleepingOwl\Admin\ViewFilters\ViewFilter\Date::TYPE) { $filterData['rule'] = $filter->getRule(); } $jsFilters[] = $filterData; } $data = ['title' => $this->modelItem->getTitle(), 'columns' => $columns, 'viewFilters' => $viewFilters, 'newEntryRoute' => $this->admin_router->routeToCreate($this->modelName, Input::query()), 'modelItem' => $this->modelItem, 'unsortableColumns' => $unsortableColumns, 'jsFilters' => $jsFilters, 'rows' => []]; if (!$this->modelItem->isAsync()) { $tableData = []; try { $tableData = $this->modelRepository->tableData(); } catch (ModelNotFoundException $e) { return $this->pageNotFound(); } $data = array_merge($data, $tableData); } $data['subtitle'] = $this->modelRepository->getSubtitle(); return $this->makeView('model.table', $data); }
/** * @return View */ public function table() { if ($result = $this->checkCustomActionCall()) { return $result; } if (Input::get('datatable_request')) { return $this->asyncTable(); } $this->queryState->save(); $data = ['title' => $this->modelItem->getTitle(), 'columns' => $this->modelItem->getColumns(), 'newEntryRoute' => $this->admin_router->routeToCreate($this->modelName, Input::query()), 'modelItem' => $this->modelItem, 'rows' => []]; if (!$this->modelItem->isAsync()) { $tableData = []; try { $tableData = $this->modelRepository->tableData(); } catch (ModelNotFoundException $e) { App::abort(404); } $data = array_merge($data, $tableData); } $data['subtitle'] = $this->modelRepository->getSubtitle(); return $this->makeView('model.table', $data); }