PHPackages                             immachakata/ci4-relationships - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. immachakata/ci4-relationships

ActiveLibrary

immachakata/ci4-relationships
=============================

Easily add and manage database relationships in CodeIgniter 4

v1.1(1y ago)37931MITPHPPHP ^7.4 || ^8.0

Since Sep 25Pushed 1y agoCompare

[ Source](https://github.com/im-machakata/ci4-relationships)[ Packagist](https://packagist.org/packages/immachakata/ci4-relationships)[ RSS](/packages/immachakata-ci4-relationships/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (1)Versions (4)Used By (0)

CodeIgniter 4 Database Relationships
====================================

[](#codeigniter-4-database-relationships)

A simple solution to add relationships to your Codeigniter 4 application.

Installation
------------

[](#installation)

You can install this library from composer by running `composer install immachakata/ci4-relationships`

Defining Relationships
----------------------

[](#defining-relationships)

You can define as many relationships as you want using the `hasMany` or `hasOne` functions as needed. Here's an example of defining a single relationship for a users avatar and multiple relationship for a users links.

```
namespace App\Models;

use CodeIgniter\Model;
use CI4Extensions\Database\RelationshipsTrait;

class UserModel extends Model
{
    use RelationshipsTrait;

    ...
    // declare relationships
    public function initialize(){
        $this->hasOne('avatar', AvatarModel::class, 'user_id');
        $this->hasMany('links', LinkModel::class, 'user_id');
    }
}
```

Using Relationships
-------------------

[](#using-relationships)

When you perfom your query, explicitly mention the field name you want back as you defined in the initialize function. To do so, use the `with($fieldName)` function. Here's an example of retrieving the user avatar

```
class UserController extends BaseController
{
    public function index(){
        ...
        $this->respond([
            'user' => model(UserModel::class)->with('avatar')->findAll()
        ]);
    }
}
```

Credits
-------

[](#credits)

Forked from [michalsn/codeigniter-nested-model](https://github.com/michalsn/codeigniter-nested-model)

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance33

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 62.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~158 days

Total

3

Last Release

643d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e9344ec558143dbc2e31ba8df7bf8dd90da7019af4399d90c9207a26ccc4577f?d=identicon)[immachakata](/maintainers/immachakata)

---

Top Contributors

[![michalsn](https://avatars.githubusercontent.com/u/459185?v=4)](https://github.com/michalsn "michalsn (5 commits)")[![immachakata](https://avatars.githubusercontent.com/u/108731754?v=4)](https://github.com/immachakata "immachakata (3 commits)")

### Embed Badge

![Health badge](/badges/immachakata-ci4-relationships/health.svg)

```
[![Health](https://phpackages.com/badges/immachakata-ci4-relationships/health.svg)](https://phpackages.com/packages/immachakata-ci4-relationships)
```

###  Alternatives

[codeigniter4/appstarter

CodeIgniter4 starter app

1891.8M](/packages/codeigniter4-appstarter)[abydahana/aksara

Aksara is a CodeIgniter based CRUD Toolkit you can use to build complex applications become shorter, secure and more reliable just in a few lines of code. Serving both CMS or Framework, produce both HEADLESS (RESTful API) or TRADITIONAL (Browser Based), just by writing single controller. Yet it's reusable, scalable and ready to use!

1101.2k](/packages/abydahana-aksara)[hermawan/codeigniter4-datatables

Serverside Datatables library for CodeIgniter4

10943.0k3](/packages/hermawan-codeigniter4-datatables)[agungsugiarto/boilerplate

CodeIgniter4 Boilerplate based on AdminLTE 3 with user management, roles, permissions, ...

1647.7k](/packages/agungsugiarto-boilerplate)[agungsugiarto/codeigniter4-cors

Send CORS Headers in a CodeIgniter 4 application.

6524.6k2](/packages/agungsugiarto-codeigniter4-cors)[jason-napolitano/codeigniter4-cart-module

A basic port of the codeigniter 3 cart module for CodeIgniter 4.

5814.8k](/packages/jason-napolitano-codeigniter4-cart-module)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
