CodeIgniter Forums
How to use two models in a controller - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: CodeIgniter 4 (https://forum.codeigniter.com/forumdisplay.php?fid=28)
+--- Forum: CodeIgniter 4 Support (https://forum.codeigniter.com/forumdisplay.php?fid=30)
+--- Thread: How to use two models in a controller (/showthread.php?tid=76413)



How to use two models in a controller - hoffmanchan - 05-11-2020

Hello everyone, this is about codeigniter 4.

I wanta use two models in a controller. But I have no idea how to solve it. Any suggestion for me please ? 

PHP Code:
<?php namespace App\Controllers;

use 
CodeIgniter\HTTP\IncomingRequest;
use 
CodeIgniter\Controller;
use 
App\Models\CompanyModel;
use 
App\Models\AuthenticationModel;

class 
Login extends BaseController
{   
    
protected $request;
    protected $companyModel;
    protected $authenticationModel;
    
    
public function __construct()
    {
        // Call the Model constructor
        $this->request service('request');
        $this->companyModel = new CompanyModel();
    }

    public function index()
    {
        $data = [
            'name' => $this->companyModel->name()
        ];

        echo view('authentication'$data);
    }

    public function process()
    {
        
        $this
->authenticationModel = new AuthenticationModel();
        $username $this->request->getPost('username');
        $password $this->request->getPost('password');

        $boolen $this->authenticationModel->authentication($username$password);

        return $boolen;
    }




RE: How to use two models in a controller - kilishan - 05-11-2020

Your example works just fine. Personally, I'd use the model() helper just to ensure I don't get more than 1 instance of the model created, but what you've done works fine.

EDIT:

if you're just using a model in a single method, there's no need to assign it to $this, just use a local variable:

PHP Code:
$authenticationModel = new AuthenticationModel();
$username $this->request->getPost('username');
$password $this->request->getPost('password');

$boolen $authenticationModel->authentication($username$password); 



RE: How to use two models in a controller - hoffmanchan - 05-11-2020

(05-11-2020, 06:40 AM)kilishan Wrote: Your example works just fine. Personally, I'd use the model() helper just to ensure I don't get more than 1 instance of the model created, but what you've done works fine.

EDIT:

if you're just using a model in a single method, there's no need to assign it to $this, just use a local variable:

PHP Code:
$authenticationModel = new AuthenticationModel();
$username $this->request->getPost('username');
$password $this->request->getPost('password');

$boolen $authenticationModel->authentication($username$password); 


kilishan, thank for your reply. I will edit about this ~