Example #1
0
 public function search_by_keyword(Database_Query $query)
 {
     $keyword = Request::initial()->query('search');
     if (is_array($keyword)) {
         $fields = array();
         foreach ($keyword as $field => $value) {
             if (in_array($field, $this->fields())) {
                 continue;
             }
             $fields[$field] = $value;
         }
         if (!empty($fields)) {
             $query->where_open();
             foreach ($fields as $field => $value) {
                 $field = Arr::get($this->fields(), $field);
                 $query->and_where(Arr::get($field, 'db_name'), 'like', '%' . $value . '%');
             }
             return $query->where_close();
         }
         return $query;
     } else {
         if (empty($keyword)) {
             return $query;
         }
     }
     $query->where_open()->or_where('d.id', 'like', '%' . $keyword . '%')->or_where('d.header', 'like', '%' . $keyword . '%');
     foreach ($this->fields() as $field) {
         if (Arr::get($field, 'searchable') === FALSE or Arr::get($field, 'db_name') === NULL) {
             continue;
         }
         $query->or_where(Arr::get($field, 'db_name'), 'like', '%' . $keyword . '%');
     }
     return $query->where_close();
 }