mysql - Yii RESTFul,JSON 格式更新和创建

标签 mysql json http rest yii

我正在尝试在 Yii 框架中使用 JSON 格式实现 RESTFul。我有一个用户表,如下所示:

CREATE TABLE user(
    id int(10) NOT NULL,
    email VARCHAR(100) NOT NULL,
    password VARCHAR(64) NOT NULL,
    nickname VARCHAR(30) NOT NULL,
    PRIMARY KEY(id)
)Engine=InnoDB;

在我的 Yii userController.php 类中(我的 yii 应用程序使用 gii 实现了 CRUD)。
我有以下两个函数,它们基本上使用 RESTful 和 JSON 格式处理 CRUD API,如下所示:

public function actionRead($id=''){
    $requestType = Yii::app()->request->getRequestType();
    if($requestType !== 'GET' && $id === ''){
        throw new Exception('$id must be specified or acces this service with GET!');
        return;
    }

    if($id !== '0'){
        $user = Yii::app()->db->createCommand('SELECT * FROM user WHERE id=:id LIMIT 1');
        $user->bindParam(':id', $id);
        $user = $user->queryRow();
    }else{
        $user = Yii::app()->db->createCommand('SELECT * FROM user WHERE 1');
        $user = $user->queryAll();
    }

    echo json_encode($user);

}


public function actionSave($id){
    $requestType = Yii::app()->request->getRequestType();
    if($requestType !== 'POST'){
        throw new Exception('Acces this service with POST!');
        return;
    }

    $post = Yii::app()->request->getPost('form');

    if($id !== ''){//update...need help with logic here for update

    }else{//create...need help with logic here for create

    }

    $command = Yii::app()->db->createCommand('INSERT INTO user (id, email) VALUES (null, :email)');
    $command->bindParam(':email', $post['email']);


    return json_encode($command->execute());
}

通过上面的代码,我可以使用 Google Chrome 中的客户端查看和列出数据。但我在获取更新和创建工作时遇到问题。我在上面的代码注释中放置了 "create""update" 两个实现的占位符。

我可以得到一些关于如何实现这一目标的想法或解决方案吗?

最佳答案

如果您有 User 模型,那么您的代码将如下所示:

$post = Yii::app()->request->getPost('form');

if($id !== ''){//update...need help with logic here for update
     $model = User::model()->findByPk($id);
}else{//create...need help with logic here for create
     $model = new User;
}
$model->email = $post['email'];
$model->nickname = $post['nickname'];
$model->password = $post['password'];
$model->save();

return json_encode($model->id);

如果 $post 有属性数组。

关于mysql - Yii RESTFul,JSON 格式更新和创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23057230/

相关文章:

javascript - 存储后获取 LawnChair JSON Obj

ios - 如何发送异步 http post - ios

php - mysql 选择两个带有 userid 的表并比较时间戳并对其进行计数

javascript - 使用 mysql 和 bcryptjs 时出现意外标识符语法错误

javascript - 在 Javascript 中将对象的一部分从数字键转换为数组

http - Gradle HTTP 插件

c++ - C++ 中的 HTTP 代理服务器

php - 如何在php中以表格形式显示mysql中的数据

mysql - 从数据库中的多行中删除前 17 个字符

javascript - 使用变量访问 JSON 值