Credo

June 5, 2018 ยท View on GitHub

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

Integrates Doctrine ORM for the Codeigniter framework.

Install

Install Credo via Composer:

$ composer require rougin/credo

Usage

// application/models/User.php

/**
 * @Entity
 * @Table(name="user")
 */
class User extends CI_Model {

    /**
     * @Id @GeneratedValue
     * @Column(name="id", type="integer", length=10, nullable=FALSE, unique=FALSE)
     * @var integer
     */
    protected $_id;

    // ...

}
// application/controllers/Welcome.php

$this->load->model('user');

$this->load->database();

$credo = new Rougin\Credo\Credo($this->db);

$repository = $credo->get_repository('User');

$user = $repository->find(4);

Using Rougin\Credo\EntityRepository

Extend Rougin\Credo\Loader to MY_Loader:

// application/core/MY_Loader.php

class MY_Loader extends \Rougin\Credo\Loader {}

Kindly also use the suffix _repository for creating repositories. (e.g. User_repository)

// application/repositories/User_repository.php

use Rougin\Credo\EntityRepository;

class User_repository extends EntityRepository {

	public function find_by_something()
	{
		// ...
	}

}

Then load the repository using $this->load->repository($repositoryName).

// application/controllers/Welcome.php

$this->load->model('user');

$this->load->repository('user');

$this->load->database();

$credo = new Rougin\Credo\Credo($this->db);

$repository = $credo->get_repository('User');

$users = $repository->find_by_something();

For more information about repositories in Doctrine, please check its documentation.

Using Rougin\Credo\CodeigniterModel

// application/models/User.php

/**
 * @Entity
 * @Table(name="user")
 */
class User extends \Rougin\Credo\CodeigniterModel {

    /**
     * @Id @GeneratedValue
     * @Column(name="id", type="integer", length=10, nullable=FALSE, unique=FALSE)
     * @var integer
     */
    protected $_id;

    // ...

}
// application/controllers/Welcome.php

$this->load->model('user', '', TRUE);

$users = $this->user->all();

Change Log

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Security

If you discover any security related issues, please email rougingutib@gmail.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see LICENSE for more information.