csitc / real-rap
适用于3.0或更高版本的Codeigniter ORM
1.0.0
2016-09-23 14:53 UTC
Requires
- php: >=5.5.30
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';
}
待办事项列表
- 包装集合数据而不是数组