Models in CodeIgniter

📘 CodeIgniter 👁 36 views 📅 Dec 22, 2025
⏱ Estimated reading time: 2 min

Models in CodeIgniter (CodeIgniter 4)

A Model in CodeIgniter is responsible for interacting with the database. It contains all the logic related to data retrieval, insertion, update, and deletion.


1. What Is a Model?

  • Handles database operations

  • Represents a database table

  • Keeps business logic out of controllers

  • Works with Query Builder automatically


2. Model Location

app/Models/

3. Creating a Model

Using Spark CLI (Recommended)

php spark make:model UserModel

Manual Creation

namespace App\Models; use CodeIgniter\Model; class UserModel extends Model { protected $table = 'users'; protected $primaryKey = 'id'; protected $allowedFields = ['name', 'email', 'password']; }

4. Basic CRUD Operations

Insert Data

$model = new UserModel(); $model->insert([ 'name' => 'John', 'email' => 'john@example.com' ]);

Fetch Data

$model->findAll(); // All records $model->find(1); // By ID $model->where('email', 'john@example.com')->first();

Update Data

$model->update(1, ['name' => 'Updated Name']);

Delete Data

$model->delete(1);

5. Using Model in Controller

use App\Models\UserModel; class User extends BaseController { public function index() { $model = new UserModel(); $data['users'] = $model->findAll(); return view('users', $data); } }

6. Validation in Models

protected $validationRules = [ 'email' => 'required|valid_email|is_unique[users.email]' ];

7. Timestamps (Automatic)

protected $useTimestamps = true; protected $createdField = 'created_at'; protected $updatedField = 'updated_at';

8. Soft Deletes

protected $useSoftDeletes = true; protected $deletedField = 'deleted_at';

9. Custom Model Methods

public function getActiveUsers() { return $this->where('status', 'active')->findAll(); }

10. Entity Classes (Optional)

protected $returnType = 'App\Entities\User';

Provides object-oriented data handling.


11. Model Protection (Mass Assignment)

protected $protectFields = true; protected $allowedFields = ['name', 'email'];

12. Best Practices

✅ One model per table
✅ Keep database logic in models
✅ Use validation & timestamps
❌ Avoid direct SQL in controllers


Summary

  • Models manage database interactions

  • Stored in app/Models

  • Provide CRUD, validation, soft deletes

  • Keep controllers clean and maintainable


🔒 Some advanced sections are available for Registered Members
Register Now

Share this Post


← Back to Tutorials

Popular Competitive Exam Quizzes