csitc/real-rap

适用于3.0或更高版本的Codeigniter ORM

1.0.0 2016-09-23 14:53 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:52:45 UTC


README

这是一个CI ORM,灵感来自laravel eloquent

中文地址: https://github.com/wugang8068/RealRap/blob/master/ReadMe_zh.md

安装方法

composer require csitc/real-rap dev-master

检索

示例:我们需要获取user_id >= 50的用户,并按user_id和user_mobile排序,获取第一个

    $users = User::all(['*'])->where([
        'user_id <=' => 50]
    )->order([
        'user_id' => 'desc',
        'user_mobile' => 'desc'])
    ->limit(1)->getOne();

结果可能如下

{
    "id":50,
    "user_nick_name":"18386053521",
    "user_device_id":"B86E62AC-5FC4-45E3-A3F0-EB4544DB135D",
    "user_mobile":"17288",
    "user_create_date":"2016-07-10 09:44:54"
}

在User.php中,我们可以这样写:

class User extends Model{

    protected $table = 'inf_user';

    protected $primaryKey = 'user_id';

    protected $cast = [
        'user_id' => 'integer',
        'is_subscribed' => 'bool'
    ];

    protected $hidden = [
        'agent_user',
        'bank_real_name',
        'is_subscribed',
        'rebate_already_mentioned',
        'rebate_being_mention',
        'rebate_unmentioned',
        'user_email'
    ];

    protected $attributes = [
        'user_id' => 'id',
    ];

}

更新

$user = User::findWhere([
    'user_mobile' => '12381121695'
])->getOne();
if($user){
    $user->user_mobile = '134234';
    $user->save();
}

创建

$user = new User();
$user->user_nick_name = 'Tom';
$user->save();

删除

$user = User::findWhere(['user_mobile' => '18600908262'])->getOne();
if($user){
    print_r($user->delete() ? 'record delete success' : 'record delete failed');
}else{
    print_r('record is not exists');
}

User::findWhere(['user_mobile' => '18600908262'])->delete()

事务

\RealRap\RealRap::trans(function(){
    $user = new User();
    $user->user_mobile = '13345727773';
    $user->save();
    $user = new User();
    $user->user_mobile = '13347818106';
    $user->save();
},function(){
   echo 'success';
},function(){
   echo 'error';
});

模型关系

如果我们想添加模型关系,例如,有一个名为==inf_user==的表,还有一个名为==inf_cd_keys==的表,且==inf_user==中的每条记录都对应一个或多个==inf_cd_keys==的记录,那么我们可以用以下代码轻松访问结果;

首先,获取用户记录

$this->user = User::all(['*'])->where([
            'user_mobile' => '17010058640'
        ])->order([
            'user_id' => 'desc',
            'user_mobile' => 'desc'
        ])->limit(1)->getOne();

然后按以下方式检索

$keys = $this->user->key  
//The $keys is an array within objects or an object or null depends on the relation in User.php

模型可以这样编写

User.php

class User extends Model
{    

	protected $table = 'inf_user';

	protected $primaryKey = 'user_id';
    
	protected function key(){
        return $this->hasMany(Key::class,'cdk_bind_user');
        //return $this->hasOne(Key::class,'cdk_bind_user');
    }
}

Key.php

class Key extends Model
{

    protected $table = 'inf_cd_keys';

    protected $primaryKey = 'cdk_id';

}

待办事项列表

  • 包装集合数据而不是数组