微服務之數據庫服務-服務端(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;
}

使用說明

參考客戶端調用方式

源碼

下載源碼

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