Search code examples
codeigniter-4

error in codeigniter 4 You must set the database table to be used with your query


i am working codeigniter 4. i am trying to fetch data from database by creating method in Model but am getting error

You must set the database table to be used with your query

even I have mentioned the table name in query builder. i dun know why this is happening ? following is my code

 public function Login($values)
    {
        $db = \Config\Database::connect();
  
        $result= $db->table('tbl_adminuser')
                     ->where(['username',$values['username']])
                     ->where(['password',$values['password']])
                     ->get()
                     ->getResult();
        print_r($result);
    }

Solution

  • There are two types of getting data from the database.

    1. Using the Model file
    2. Load db in the controller file

    Check both the below types to get data from the database.

    1. Using the Model file

    First, create a User model and mention the name of the database table.

    Here is the sample of model file:

    <?php 
    namespace App\Models;
         
    use CodeIgniter\Model;
        
    class UserMasterModel extends Model
    {
        protected $table   = 'user_master';
    }  
    

    Then create a controller file and load the model using use App\Models\UserMasterModel;. You should following the below sample of the controller file there is mention load the model and get the data using a model file.

    <?php 
    namespace App\Controllers;
    use CodeIgniter\Controller;
    
    use App\Models\UserMasterModel;
    
    public function __construct()
    {
        $this->db = \Config\Database::connect();
    }
    
    public function Login($values){
        $UserMasterModel = new UserMasterModel();
        $result = $UserMasterModel->where('username',$values['username'])
                                    ->where('password',$values['password'])
                                    ->findAll();
        print_r($result);
    }
    

    2. Load db in controller file

    When using \Config\Database::connect() the controller file looks like below:

    <?php 
    namespace App\Controllers;
    use CodeIgniter\Controller;
    
    public function __construct()
    {
        $this->db = \Config\Database::connect();
        $this->user_master = $this->db->table('user_master');
    }
    
    public function Login($values){
        $this->user_master->select('*');
        $this->user_master->where('username',$values['username']);
        $this->user_master->where('password',$values['password']);
        $result = $this->user_master->get()->getResult();
    
        print_r($result);
    }