maltyxx/orm

此包已被放弃且不再维护。未建议替代包。

CodeIgniter 2 和 CodeIgniter 3 的 ORM 库

安装次数: 1,189

依赖项: 0

建议者: 0

安全: 0

星标: 11

关注者: 2

分支: 7

开放问题: 0

类型:codeigniter-library

v3.3.4 2015-07-21 10:58 UTC

This package is not auto-updated.

Last update: 2020-11-10 16:19:14 UTC


README

CodeIgniter 2 和 CodeIgniter 3 的对象关系映射

####该项目不再维护,我们建议使用 Origami 项目 https://github.com/maltyxx/origami.

安装

步骤 1 使用 Composer 安装

编辑 /composer.json

{
    "require": {
        "maltyxx/orm": "3.3.*"
    }
}

运行 composer update

composer update

步骤 2 创建文件

/application/controllers/Modelgenerator.php for CodeIgniter 3
/application/controllers/modelgenerator.php for CodeIgniter 2
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require(APPPATH.'/libraries/Orm/controllers/Modelgenerator.php');
/application/helpers/orm_helper.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require(APPPATH.'/libraries/Orm/helpers/orm_helper.php');
/application/language/english/orm_lang.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require(APPPATH.'/libraries/Orm/language/english/orm_lang.php');
/application/libraries/Orm.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require(APPPATH.'/libraries/Orm/Orm.php');

步骤 3 数据库配置

配置 /application/config/database.php

$db['databasename'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => '',
	'dbdriver' => 'mysqli',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => TRUE,
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

步骤 4 模型生成器

CLI 方法

php index.php modelgenerator index

OR

WEB 方法

http://site/index.php?/modelgenerator/index

ORM 配置

/application/config/orm.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

$config['orm'] = array(
    'cache' => FALSE,
    'tts' => 3600,
    'autoloadmodel' => TRUE,
    'binary_enable' => FALSE, // MySQL 5.6 minimum
    'encryption_enable' => FALSE, // MySQL 5.6 minimum
    'encryption_key' => "" // MySQL 5.6 minimum
);

示例

/application/controllers/exemple.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }
    
    public function index() {
        // ---------- Chargement de la library
        $this->load->library('orm');
        
        // ------------------------------------------------------------------

        // ---------- Exemple création d'un nouvelle object (INSERT)
        $model_user = new \databasename\user_model();
        $model_user->login = 'yoann';
        $model_user->save();
        
        var_dump($model_user);
        
        // ------------------------------------------------------------------
        
        // ---------- Exemple modification de l'object id 100 (UPDATE)
        $user = new \databasename\user_model(100);
        $user->login = 'vanitou';
        $user->save();
        
        // ------------------------------------------------------------------
        
        // ---------- Exemple charge l'object id 100 (SELECT)
        $user = new \databasename\user_model(100);
        
        var_dump($user);
        
        // Autre façon de faire
        $model_user = new \databasename\user_model();
        $user = $model_user->where('id', 100)->find_one();
        
        // Recherche avancé
        $model_user = new \databasename\user_model();
        $users = $model_user->where('login', 'vanitou')->order_by('id', 'ASC')->find();
            
        var_dump($users);
        
        // ------------------------------------------------------------------
        
        // ---------- Exemple suppression de l'object id 100 (DELETE)
        $user = new \databasename\user_model(100);
        $user->remove();
        
        // ---------- Exemple relation
        $user = new \databasename\user_model(100);
        
        // Retourne un object "\databasename\user_group_model"
        $user_group = $user->user_group()->find_one();
        
        var_dump($user, $user_group);
        
        // ------------------------------------------------------------------
        
        // ---------- Exemple validation
        $user = new \databasename\user_model(100);
        $user->firstname = 'Yoann';
        $user->lastname = 'Vanitou';
        
        // Vérifie si l'object est valide
        if ( ! $user->is_validate()) {
            $errors = $user->validate();
            
            // Retourne les champs invalide
            var_dump($errors);
            
        } else {
            // Si l'object est valide on le sauvegarde
            $user->save();
        }
        
        // ------------------------------------------------------------------
                
        // ---------- Exemple transaction automatique
        $this->db_databasename->trans_start();
        
        // Mise à jour de l'object id 100 (UPDATE)
        $user = new \databasename\user_model(100);
        $user->firstname = 'Yoann';
        $user->save();
        
        $this->db_databasename->trans_complete();
        
        // Statut de la transaction
        var_dump($this->db->trans_status());
                
        // ------------------------------------------------------------------
        
        // Affiche les requêtes SQL
        $this->output->enable_profiler(TRUE);
    }

}