private function getDataGridItems(Request $request)
 {
     $dataGridConfig = $this->getScaffoldConfig()->getDataGridConfig();
     $dataGridFilterConfig = $this->getScaffoldConfig()->getDataGridFilterConfig();
     $conditions = ['LIMIT' => $request->query('length', $dataGridConfig->getLimit()), 'OFFSET' => (int) $request->query('start', 0), 'ORDER' => []];
     if ($dataGridConfig->hasContains()) {
         $conditions['CONTAIN'] = $dataGridConfig->getContains();
     }
     $conditions = array_merge($dataGridConfig->getSpecialConditions(), $conditions);
     $searchInfo = $request->query('search');
     if (!empty($searchInfo) && !empty($searchInfo['value'])) {
         $search = json_decode($searchInfo['value'], true);
         if (!empty($search) && is_array($search) && !empty($search['r'])) {
             $conditions = array_replace($dataGridFilterConfig->buildConditionsFromSearchRules($search), $conditions);
         }
     }
     $order = $request->query('order', [['column' => $dataGridConfig->getOrderBy(), 'dir' => $dataGridConfig->getOrderDirection()]]);
     $columns = $request->query('columns', array());
     /** @var array $order */
     foreach ($order as $config) {
         if (is_numeric($config['column']) && !empty($columns[$config['column']])) {
             $config['column'] = $columns[$config['column']]['name'];
         }
         if (!empty($config['column']) && !is_numeric($config['column'])) {
             if ($config['column'] instanceof DbExpr) {
                 $conditions['ORDER'][] = DbExpr::create($config['column']->get() . ' ' . $config['dir']);
             } else {
                 $conditions['ORDER'][$config['column']] = $config['dir'];
             }
         }
     }
     $result = $this->getModel()->selectWithCount(array_keys($dataGridConfig->getDbFields()), $conditions);
     if ($result['count'] > 0) {
         $result['records'] = $dataGridConfig->prepareRecords($result['records']);
     }
     return ['draw' => $request->query('draw'), 'recordsTotal' => $result['count'], 'recordsFiltered' => $result['count'], 'data' => $result['records']];
 }