架构中有两套数据库CURD基本操作,其区别是?


Q5LQH[I09PE)AECG3O8[2H1.png


PhalApi框架对于数据库的基本操作提供了两套基本的CURD操作,即:有两种update()、两种insert()、两种delete()的方法,其两者的区别是什么,以及应该怎么使用。
已邀请:

dogstar - PhalApi创始人

赞同来自: 农鲜哥

一种是notorm提供的CURD操作,此类操作可给开发人员更自由的使用空间,我们可以类似这样轻松的参考notorm官方文档进行以下调用:
//查询
$row = DI()->notorm->user->where('id', 1)->fetch();

//更新
$data = array('name' => 'test', 'update_time' => time());
DI()->notorm->user->where('id', 1)->update($data);

//插入
$data = array('name' => 'phalapi');
$id = DI()->user->insert($data);

//删除
DI()->user->where('id', 1)->delete();

另外一种是PhalApi基于notorm封装的model基类,以便更统一的处理分表和减少重复性的基础代码编写工作。
但这要求自定义的Model类需要继承于PhalApi_Model_NotORM类,并重写getTableName($id)方法返回表的名称。
如上面的,我们需要作这样的准备:
<?php

class Model_User extends PhalApi_Model_NotORM {

protected function getTableName($id) {
return 'user';
}
}
然后,就可以:
$model = new Model_User();

//查询
$row = $model->get(1);
$row = $model->get(1, 'id, name'); //取指定的字段
$row = $model->get(1, array('id', 'name')); //可以数组取指定要获取的字段

//更新
$data = array('name' => 'test', 'update_time' => time());
$model->update(1, $data); //基于主键的快速更新

//插入
$data = array('name' => 'phalapi');
$id = $model->insert($data);
//$id = $model->insert($data, 5); //如果是裊,可以这样指定

//删除
$model->delete(1);

之所以这样设计,是为了项目开发更大的自主空间。你可以使用notorm原生态的操作,也可以使用PhalApi再封装的操作,还可以使用你喜欢的任意数据库操作方式。这里只是提供了可选的方案。

要回复问题请先登录注册