Ejemplo n.º 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();
 }
Ejemplo n.º 2
0
 /**
  * 
  * @param Database_Query $db
  * @param array $clause
  * @return type
  */
 public static function _conditions($db, array $clause)
 {
     foreach ($clause as $type => $params) {
         switch ($type) {
             case 'select':
                 foreach ($params as $param) {
                     $db->select($param);
                 }
                 break;
             case 'where':
                 foreach ($params as $param) {
                     $db->where($param[0], $param[1], $param[2]);
                 }
                 break;
             case 'or_where':
                 foreach ($params as $param) {
                     $db->or_where($param[0], $param[1], $param[2]);
                 }
                 break;
             case 'order_by':
                 foreach ($params as $param) {
                     $db->order_by($param[0], $param[1]);
                 }
                 break;
             case 'limit':
                 $db->limit((int) $params);
                 break;
             case 'offset':
                 $db->offset((int) $params);
                 break;
         }
     }
     return $db;
 }