Call Model method from another Model in Codeigniter

  • In CodeIgniter, the Model is used for the Database manipulation – fetch, insert, update, and delete records.
  • If within the project there are multiple Models are available then it may require to perform the action during a Model which is already created in another Model.
  • In this case, you’ll either create a separate function to perform an equivalent action or use the already available method within the Model.
  • It is possible to reuse the method in the Model from another Model.
  • Models are loaded within the Model as same as loaded within the Controller using $this->load->model().
  • Create Three Models and call 1st and 2nd Model methods from the 3rd Model.

1.Configuration

Default controller

Open application/config/routes.php and edit default_controller value to User.

$route[‘default_controller’] = ‘User’;

2.Model 1 : Call Model method from another Model

Create a new Model_1.php file in application/models/ directory.

Create two methods –

  1. fun1()
  2. fun2()

 which returns string text.

Code

[pastacode lang=”php” manual=”%3C%3Fphp%20if%20(%20!%20defined(‘BASEPATH’))%20exit(‘No%20direct%20script%20access%20allowed’)%3B%0A%0AClass%20Model_1%20extends%20CI_Model%20%7B%0A%0Apublic%20function%20fun1()%7B%0Areturn%20%22Model_1%20fun1%22%3B%0A%20%20%7D%0A%0Apublic%20function%20fun2()%7B%0Areturn%20%22Model_1%20fun2%22%3B%0A%20%20%7D%0A%0A%7D%0A%0A” message=”” highlight=”” provider=”manual”/]

3.Model 2 : Call Model method from another Model

Create a new Model_2.php file in application/models/ directory.

Create two methods –

  1. fun1()
  2. fun2()

 which returns string text.

Code

[pastacode lang=”php” manual=”%3C%3Fphp%20if%20(%20!%20defined(‘BASEPATH’))%20exit(‘No%20direct%20script%20access%20allowed’)%3B%0A%0AClass%20Model_2%20extends%20CI_Model%20%7B%0A%0Apublic%20function%20fun1()%7B%0Areturn%20%22Model_2%20fun1%22%3B%0A%20%20%7D%0A%0Apublic%20function%20fun2()%7B%0Areturn%20%22Model_2%20fun2%22%3B%0A%20%20%7D%0A%0A%7D%0A%0A” message=”” highlight=”” provider=”manual”/]

4.Model 3 : Call Model method from another Model

Create a new Model_3.php file in application/models/ directory.

In this Model, I loaded 2 Models – Model_1 and Model_2 and access their methods.

  • Syntax – Load and Access Model

$this->load->model(‘Model_name’); // Load Model

$this->Model_name->method_name(); // Access Method

  • Load Models –

__construct – Load Model_1 and Model_2 using $this->load->model().

  • Access Two methods –

fun1 – Call fun1() method of Model_1 $this->Model_1->fun1() and assign response in $response Array. Similarly call fun1() method of Model_2 $this->Model_2->fun1() and assign to $response Array.

Return $response.

  • Access Single method –

fun2 – Call fun2() method of Model_2 $this->Model_2->fun2() and assign response in $response Array

Return $response.

Code

[pastacode lang=”php” manual=”%3C%3Fphp%20if%20(%20!%20defined(‘BASEPATH’))%20exit(‘No%20direct%20script%20access%20allowed’)%3B%0A%0AClass%20Model_3%20extends%20CI_Model%20%7B%0A%0Apublic%20function%20__construct()%20%7B%0A%20%20%20%20parent%3A%3A__construct()%3B%0A%0A%20%20%20%20%2F%2F%20Load%20Models%20-%20Model_1%20and%20Model_2%0A%20%20%20%20%24this-%3Eload-%3Emodel(‘Model_1’)%3B%0A%20%20%20%20%24this-%3Eload-%3Emodel(‘Model_2’)%3B%0A%20%20%7D%0A%0Apublic%20function%20fun1()%7B%0A%0A%20%20%20%20%2F%2F%20Access%20Two%20model%20methods%20and%20assing%20response%20to%20Array%0A%20%20%20%20%24response%5B%5D%20%3D%20%24this-%3EModel_1-%3Efun1()%3B%0A%20%20%20%20%24response%5B%5D%20%3D%20%24this-%3EModel_2-%3Efun1()%3B%0A%0A%20%20%20%20%24response%5B%5D%20%3D%20%22Model_3%20fun1%22%3B%0A%0Areturn%20%24response%3B%0A%20%20%7D%0A%0Apublic%20function%20fun2()%7B%0A%0A%20%20%20%20%2F%2F%20Access%20single%20Model%20method%20and%20assign%20response%20to%20Array%0A%20%20%20%20%24response%5B%5D%20%3D%20%24this-%3EModel_2-%3Efun2()%3B%0A%0A%20%20%20%20%24response%5B%5D%20%3D%20%22Model_3%20fun2%22%3B%0Areturn%20%24response%3B%0A%20%20%7D%0A%0A%7D%0A” message=”” highlight=”” provider=”manual”/]

5.Controller

  • Create a new User.php file in application/controllers/ directory.
  • Load Model_3 Model and call fun1() and fun2() methods.
  • Print the response.

Code

[pastacode lang=”php” manual=”%3C%3Fphp%0Adefined(‘BASEPATH’)%20OR%20exit(‘No%20direct%20script%20access%20allowed’)%3B%0A%0Aclass%20User%20extends%20CI_Controller%20%7B%0A%0Apublic%20function%20__construct()%7B%0A%0A%20%20%20%20parent%3A%3A__construct()%3B%0A%0A%20%20%20%20%2F%2F%20Load%20model%0A%20%20%20%20%24this-%3Eload-%3Emodel(‘Model_3’)%3B%0A%20%20%7D%0A%0Apublic%20function%20index()%7B%0A%0A%20%20%20%20%2F%2F%20Call%20fun1()%20method%20of%20Model_3%0A%20%20%20%20%24response1%20%3D%20%24this-%3EModel_3-%3Efun1()%3B%0Aecho%20%22%3Cpre%3E%22%3B%0Aprint_r(%24response1)%3B%0Aecho%20%22%3C%2Fpre%3E%22%3B%0A%0A%20%20%20%20%2F%2F%20Call%20fun2()%20method%20of%20Model_3%0A%20%20%20%20%24response2%20%3D%20%24this-%3EModel_3-%3Efun2()%3B%0Aecho%20%22%3Cpre%3E%22%3B%0Aprint_r(%24response2)%3B%0Aecho%20%22%3C%2Fpre%3E%22%3B%0A%0A%20%20%7D%0A%0A%7D%0A” message=”” highlight=”” provider=”manual”/]

6.Output

It gives the following output –

Call Model method from another Model in Codeigniter

Conclusion

Use $this->load->model() method to load the Model and access methods same as accessed from the Controller.

PHP TUTORIAL

Previous Article

How to show and hide div based on dropdown selection in jQuery

Next Article

Python String split()

Write a Comment

Leave a Comment

Your email address will not be published. Required fields are marked *