微服务之数据库服务-服务端(PHP+YII)

以YII、自定义数据操作两种方式组成的数据库微服务的服务端。
客户端介绍

YII控制器

BaseController

所有数据库操作请求的基类,通过获取对应的参数实例化数据库类。提供其他基础操作函数。

初始化数据库代码

// 返回值为JSON
Yii::$app->response->format = Response::FORMAT_JSON;

// 初始化数据库信息
$request = Yii::$app->request;
$dbName    = $request->get('_db', $request->post('_db', ''));
$tableName = $request->get('_table', $request->post('_table', ''));
$dbType    = $request->get('_type', $request->post('_type', 'mysql'));
$this->initDb($dbName, $tableName, $dbType);

DmlController、DqlController

继承自BaseController,提供自定义的函数操作处理,对应客户端Dg_Db_Hnb类。

insert

/**
 * insert 插入数据
 * @return JSON
 */
public function actionInsert()
{
    // 参数
    $request  = Yii::$app->request;
    $data     = $request->post('data', array());
    if ( empty($data) || !is_array($data) ) {
        return $this->renderJson(ERROR, ERROR_PARAM_DATA_WRONG, '数据参数错误!');
    }
    // 插入
    $response = $this->_dbBase->insert($data);
    // 输出
    return $response;
}

query

/**
 * 查询数据
 * @param  array   $param 查询条件,条件数组或者条件SQL
 * @param  string  $order 排序规则
 * @param  string  $limit 获取条数
 * @param  string  $field 查询的列,默认为*
 * @param  string  $group 分组规则
 * @return json   数据列表
 */
public function actionQuery()
{
    // 参数
    $request = Yii::$app->request;
    $param   = $request->get('param', '');
    $param   = $this->formatParam($param);
    $order   = $request->get('order', false);
    $limit   = $request->get('limit', false);
    $field   = $request->get('field', '*');
    $group   = $request->get('group', false);

    // 查询
    $response = $this->_dbBase->query($param, $order, $limit, $field, $group);
    // 输出
    return $response;
}

QueryController

继承自BaseController,提供Yii数据操作处理,对应客户端Dg_Db_Yii类。

/**
 * Yii\db\Query命令请求
 */
public function actionIndex()
{
    $request = Yii::$app->request;
    $_db     = $request->get('_db', '');
    $_call   = $request->get('_call', array());
    try {
        $results = $this->execute(new \yii\db\Query(), $_call);
        return $this->renderJson(SUCCESS, NO_ERROR, $results);
    } catch (\Exception $e) {
        return $this->renderJson(ERROR, $e->getCode(), $e->getMessage());
    }
    return $results;
}

使用说明

参考客户端调用方式

源码

下载源码

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章