diff options
Diffstat (limited to 'user_guide_src/source/general/models.rst')
-rw-r--r-- | user_guide_src/source/general/models.rst | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/user_guide_src/source/general/models.rst b/user_guide_src/source/general/models.rst deleted file mode 100644 index eb842e927..000000000 --- a/user_guide_src/source/general/models.rst +++ /dev/null @@ -1,179 +0,0 @@ -###### -Models -###### - -Models are **optionally** available for those who want to use a more -traditional MVC approach. - -.. contents:: Page Contents - -What is a Model? -================ - -Models are PHP classes that are designed to work with information in -your database. For example, let's say you use CodeIgniter to manage a -blog. You might have a model class that contains functions to insert, -update, and retrieve your blog data. Here is an example of what such a -model class might look like:: - - class Blog_model extends CI_Model { - - public $title; - public $content; - public $date; - - public function get_last_ten_entries() - { - $query = $this->db->get('entries', 10); - return $query->result(); - } - - public function insert_entry() - { - $this->title = $_POST['title']; // please read the below note - $this->content = $_POST['content']; - $this->date = time(); - - $this->db->insert('entries', $this); - } - - public function update_entry() - { - $this->title = $_POST['title']; - $this->content = $_POST['content']; - $this->date = time(); - - $this->db->update('entries', $this, array('id' => $_POST['id'])); - } - - } - -.. note:: The methods in the above example use the :doc:`Query Builder - <../database/query_builder>` database methods. - -.. note:: For the sake of simplicity in this example we're using ``$_POST`` - directly. This is generally bad practice, and a more common approach - would be to use the :doc:`Input Library <../libraries/input>` - ``$this->input->post('title')``. - -Anatomy of a Model -================== - -Model classes are stored in your **application/models/** directory. -They can be nested within sub-directories if you want this type of -organization. - -The basic prototype for a model class is this:: - - class Model_name extends CI_Model { - - public function __construct() - { - parent::__construct(); - // Your own constructor code - } - - } - -Where **Model_name** is the name of your class. Class names **must** have -the first letter capitalized with the rest of the name lowercase. Make -sure your class extends the base Model class. - -The file name must match the class name. For example, if this is your class:: - - class User_model extends CI_Model { - - public function __construct() - { - parent::__construct(); - // Your own constructor code - } - - } - -Your file will be this:: - - application/models/User_model.php - -Loading a Model -=============== - -Your models will typically be loaded and called from within your -:doc:`controller <controllers>` methods. To load a model you will use -the following method:: - - $this->load->model('model_name'); - -If your model is located in a sub-directory, include the relative path -from your models directory. For example, if you have a model located at -*application/models/blog/Queries.php* you'll load it using:: - - $this->load->model('blog/queries'); - -Once loaded, you will access your model methods using an object with the -same name as your class:: - - $this->load->model('model_name'); - - $this->model_name->method(); - -If you would like your model assigned to a different object name you can -specify it via the second parameter of the loading method:: - - $this->load->model('model_name', 'foobar'); - - $this->foobar->method(); - -Here is an example of a controller, that loads a model, then serves a -view:: - - class Blog_controller extends CI_Controller { - - public function blog() - { - $this->load->model('blog'); - - $data['query'] = $this->blog->get_last_ten_entries(); - - $this->load->view('blog', $data); - } - } - - -Auto-loading Models -=================== - -If you find that you need a particular model globally throughout your -application, you can tell CodeIgniter to auto-load it during system -initialization. This is done by opening the -**application/config/autoload.php** file and adding the model to the -autoload array. - -Connecting to your Database -=========================== - -When a model is loaded it does **NOT** connect automatically to your -database. The following options for connecting are available to you: - -- You can connect using the standard database methods :doc:`described - here <../database/connecting>`, either from within your - Controller class or your Model class. -- You can tell the model loading method to auto-connect by passing - TRUE (boolean) via the third parameter, and connectivity settings, - as defined in your database config file will be used:: - - $this->load->model('model_name', '', TRUE); - -- You can manually pass database connectivity settings via the third - parameter:: - - $config['hostname'] = 'localhost'; - $config['username'] = 'myusername'; - $config['password'] = 'mypassword'; - $config['database'] = 'mydatabase'; - $config['dbdriver'] = 'mysqli'; - $config['dbprefix'] = ''; - $config['pconnect'] = FALSE; - $config['db_debug'] = TRUE; - - $this->load->model('model_name', '', $config);
\ No newline at end of file |