Ocs-server/Gfx4/Models: Difference between revisions
Created page with "The '''EModel''' class contains various facilities for querying databases and performing standard tasks like SELECT, INSERT, UPDATE and DELETE. So, for example, if you're writ..." |
No edit summary |
||
(4 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
Think of a Model of an object that has to return data that should already human understandable if seen raw. | Think of a Model of an object that has to return data that should already human understandable if seen raw. | ||
This is an example of a basic model class: | This is an example of a basic model class: | ||
<syntaxhighlight lang="php"> | |||
<?php | |||
class ArticlesModel extends EModel | |||
{ | |||
public function __construct() | |||
{ | { | ||
parent::__construct("articles"); | |||
} | |||
public function getAll() | |||
{ | |||
$data = $this->find("*"); | |||
return $data; | |||
} | } | ||
?> | } | ||
?> | |||
</syntaxhighlight> | |||
------------------ | |||
EModel works with conditions that stays still after a query has been executed. | |||
* '''EModel::add_condition($c);''' //example: $model->add_condition('a=1'); $model->find('*'); | |||
* '''EModel::clear_conditions();''' //example: $model->clear_conditions(); | |||
* '''EModel::set_limit($limit);''' //$limit being an integer | |||
* '''EModel::clear_limit();''' | |||
* '''EModel::set_ascending();''' | |||
* '''EModel::set_descending();''' | |||
* '''EModel::order_by($field=array());''' //example: $model->order_by(array('id','name'); | |||
* '''EModel::clear_ordering();''' | |||
------------------ | |||
EModel class wraps many of the operations that can be made to a database. Here is a list of the most useful methods of EModel: | |||
* '''EModel::fields()''': | |||
Returns all fields contained in table structure | |||
---------- | |||
* '''EModel::insert($fields=array())''': | |||
Being $field and associative array $key => $value with the correct data. | |||
Example: | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
//let's assume the page will receive 2 GET parameters, one with key 'name' and one with key 'password' | |||
$name = EHeader::db_get('name'); | |||
$password = EHeader::db_get('password'); | |||
$e = new EModel('users'); //'users' is the name of the table that contains a column called 'name' and one called 'password' | |||
$e->insert(array('name' => $name, 'password' => $password)); | |||
?> | |||
</syntaxhighlight> | |||
---------- | |||
* '''EModel::count($fields=array())''': | |||
Performs a '''COUNT()''' of a '''SELECT''' query. $field is the field to select. Additional parameters can be added at the end of the query with $where parameter. | |||
Example: | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
$e = new EModel('users'); | |||
$result = $e->count('name', 'where password=$password'); | |||
//$result contains exactly the number of rows returned, it beings of course an integer | |||
} | |||
?> | |||
</syntaxhighlight> | |||
---------- | |||
* '''EModel::is_there($fields=array())''': | |||
Checks if a query returns more than a row and returns '''true''' or '''false'''. $field is the field to select. Additional parameters can be added at the end of the query with $where parameter. | |||
Example: | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
$e = new EModel('users'); | |||
$result = $e->is_there('name', 'where password=$password'); | |||
//$result contains true or false, whether the query result has at least one row or not | |||
} | |||
?> | |||
</syntaxhighlight> | |||
---------- | |||
* '''EModel::delete()''': | |||
Wraps a DELETE query and deletes rows following $where conditions to be put at the end of the query. $howmany is used to put a limit to the rows being deleted. | |||
Example: | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
$e = new EModel('users'); | |||
$e->delete('password=$password', 1); | |||
//this time the '''WHERE''' statement hasn't to be manually added to the $where parameter | |||
} | |||
?> | |||
</syntaxhighlight> | |||
---------- | |||
* '''EModel::update($fields=array())''': | |||
The same as EModel::insert(), just for updating fields. For security reasons is good practice to specify $allowed_fields() with only allowed fields. | |||
Example: | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
$e = new EModel('users'); | |||
$e->update('password=$password', array('name')); | |||
//only name will be updated, even if password is defined | |||
} | |||
?> | |||
</syntaxhighlight> |
Latest revision as of 10:33, 23 May 2016
The EModel class contains various facilities for querying databases and performing standard tasks like SELECT, INSERT, UPDATE and DELETE. So, for example, if you're writing a class that interfaces with the "posts" class in your database, you should create a file name "posts.model.php" in the "model" directory. GFX already knows that there are models there. This is a convention when creating models directly binded to a database table but feel free to create models with custom names. There is no particular restriction on Model's use.
Every model should be name following this syntax <tablename>.model.php in order to be automatically loaded by gfx as a model. Then you can write your code that basically queries the database and returns the correct data, along with all manipulations done.
Think of a Model of an object that has to return data that should already human understandable if seen raw.
This is an example of a basic model class:
<?php
class ArticlesModel extends EModel
{
public function __construct()
{
parent::__construct("articles");
}
public function getAll()
{
$data = $this->find("*");
return $data;
}
}
?>
EModel works with conditions that stays still after a query has been executed.
- EModel::add_condition($c); //example: $model->add_condition('a=1'); $model->find('*');
- EModel::clear_conditions(); //example: $model->clear_conditions();
- EModel::set_limit($limit); //$limit being an integer
- EModel::clear_limit();
- EModel::set_ascending();
- EModel::set_descending();
- EModel::order_by($field=array()); //example: $model->order_by(array('id','name');
- EModel::clear_ordering();
EModel class wraps many of the operations that can be made to a database. Here is a list of the most useful methods of EModel:
- EModel::fields():
Returns all fields contained in table structure
- EModel::insert($fields=array()):
Being $field and associative array $key => $value with the correct data. Example:
<?php
//let's assume the page will receive 2 GET parameters, one with key 'name' and one with key 'password'
$name = EHeader::db_get('name');
$password = EHeader::db_get('password');
$e = new EModel('users'); //'users' is the name of the table that contains a column called 'name' and one called 'password'
$e->insert(array('name' => $name, 'password' => $password));
?>
- EModel::count($fields=array()):
Performs a COUNT() of a SELECT query. $field is the field to select. Additional parameters can be added at the end of the query with $where parameter. Example:
<?php
$e = new EModel('users');
$result = $e->count('name', 'where password=$password');
//$result contains exactly the number of rows returned, it beings of course an integer
}
?>
- EModel::is_there($fields=array()):
Checks if a query returns more than a row and returns true or false. $field is the field to select. Additional parameters can be added at the end of the query with $where parameter. Example:
<?php
$e = new EModel('users');
$result = $e->is_there('name', 'where password=$password');
//$result contains true or false, whether the query result has at least one row or not
}
?>
- EModel::delete():
Wraps a DELETE query and deletes rows following $where conditions to be put at the end of the query. $howmany is used to put a limit to the rows being deleted. Example:
<?php
$e = new EModel('users');
$e->delete('password=$password', 1);
//this time the '''WHERE''' statement hasn't to be manually added to the $where parameter
}
?>
- EModel::update($fields=array()):
The same as EModel::insert(), just for updating fields. For security reasons is good practice to specify $allowed_fields() with only allowed fields. Example:
<?php
$e = new EModel('users');
$e->update('password=$password', array('name'));
//only name will be updated, even if password is defined
}
?>