Welcome Guest, Not a member yet? Register   Sign In
Hello
#1

[eluser]paulipv[/eluser]
I've worked to an advanced version of MY_Model (thats work most like a datamapper)

Some key features:
- Models are loaded automatly (they are checked in APPPATH and other third party folders).
- supports table read-only
- Automatic date inserts (fields are listed in array ex: array('created', 'date_added'))
- Automatic date updates
- Auto trim
- XSS Clean
- Support validation (validation callbacks in model works well also)
- Hooks for insert, update, delete, get, save.
- Adapters (create your own adapters for data manipulation, etc).
- Model relations:
Example:

Code:
$relations = array(
       'users_meta' => array(
       'fk' => 'user_id' ,
       'join' => array('join_self_as' => 'user_id', 'join_other_as' => 'id'),
       'delete' => TRUE // That is for cascade delete.
     )
   );

   // Relations are checked when you run methods like delete, join_related, save_related
   // Example
  
   $model->join_related('other_model')->get();
   // Multiple joins
  
   $model->join_related('model1/model2/model3')->where(key,value)->get();
  
   // Or
   $model->join_related('*')->get();

- Dynamic methods (similar to Datamapper ORM)

get_by
get_by_field_and_otherfield
get_by_field_or_other_field
get_all_by

- Implemented save() method for inserts/update. (auto detection of what method to use).

// Some examples
Code:
// Saving/updating data
  
   $model->set($data);
  // Or
  $model->field = 'value here';
  // Or
  $model->save($data); // insert/update methods available also
  
  // Validate data..
  // Skip validation also available on arg list or simply use:
  // $model->skip_validation()->save();
  
  if (!$model->save()) {
    $errors = $model->validation_errors();
  }

  // Retrieve data
  // $model->rows or $model->result() to get data
  // $model->total_rows
  // For a single row result $model->id (to return primary key)

  $model->id = 1;
  $model->get_row();
  echo $model->field_name;  

  $model->where($key,$val)->get();
  // Working with data addapter

  $array_result = $model->where()->get()->to_array();
  $json_result  = $model->where()->get()->to_json();
  $xml_result   = $model->where()->get()->to_xml();

  /** Xml look like:
     <data>
         <records>
             <row_1>
               <row data>
              </row_1>
         </records>
      <tableinfo>
       ....
      </tableinfo>
   */
  


  

  $generate_table = $model->get($limit, $offset)->table($table_options);
  

  // Other get methods supported
  $model->get_by($where, $or_where);

  // Get a single row based on primary key
  $model->get_row(primary_value);

  // Similar to get_by but returns multiple rows
  $model->get_all_by();
  // Magic
  $model->get_all_by_field();
  $model->get_all_by_field_and_otherfield();
  $model->get_all_by_field_or_otherfield();

  // Get many/Get many by / Get all
  $model->get_many();
  $model->get_many_by();
  $model->get_all();

  // Count methods
  $model->count_by($args);
  $model->count_all();

  // Working with date adapter

  $model->today()->get();
  $model->yesterday()->get();
  $model->current_month()->get();
  $model->last_month()->get();
  $model->current_year()->get();
  $model->last_year()->get();
  
  $model->year(year)->get();
  $model->month(month)->get();
  $model->day(day)->get();
  $model->hour(hour)->get();
  $model->minute(minute)->get();

  $model->where_date(custom_date , '= , > , <')->get();
  $model->between('start' , 'end')->get();

  // Other methods
  // between_months/between_days
Code:
Available public methods:
  exists()
  record_exists()
  get()
  get_by()
  get_row()
  get_all_by()
  get_many()
  get_many_by()
  get_all()
  count_by()
  count_all()
  save()
  save_related()
  set()
  insert()
  insert_many()
  update()
  update_many()
  update_by()
  update_all()
  update_related()
  delete()
  delete_many()
  delete_where()
  delete_from()
  tjoin()
  join_related()
  date_now()
  id()
  fk()
  inserted_id()
  get_copy()
  get_clone()
  get_relation_fk()
  get_model()
  dropdown()
  enum()  // Get values for enum fields..
  clean()
  safe_select()
  query()
  table()
  fields()
  set_table_fields()
  field_info()
  set_table_name()
  table_info()
  get_errors()

Is still in dev mode, so advices/new methods implementation are welcome.







Theme © iAndrew 2016 - Forum software by © MyBB