Cakephp Web服务关于“添加”的问题


Cakephp Web Service issue on "add"

我正在尝试使用cakephp设置一个简单的restful api。我遵循Cakephp站点的文档。但是我遇到了以下问题:

我使用邮差插件来测试Api调用。我有一个名为"类别"的表,并在其控制器中有一个动作add()。

public function add() {
    if ($this->request->is('post')) {
        $this->Category->create();
        if ($this->Category->save($this->data)) {
            $message = 'Saved';
        }
        else {
            $message = 'Error';
        }
        $this->set(array(
            'message' => $message,
            '_serialize' => array('message')
        ));
    }
}

和在db中,我有分类表的模式(id (int 11, PK, A_I),名称(varchar(40)),创建(datetime),修改(datetime))。

从邮差我发送POST请求到http://myProject/categories.json.

从我的理解,当我发送键:名称和值:测试,它必须保存到数据库中,这工作得很好。但是,当我将"键"替换为其他东西而不是名称时,我必须得到错误。例如key: name123和value: test2,但是这些数据也被保存在数据库中,除了name字段没有任何错误。即保存(id:some value, name:",创建:somevalue,修改:somevalue)我不明白怎么回事。

你需要提供更多的信息,因为你所说的没有意义。例如,您发布的数据看起来像什么?模型中有任何类型的验证吗?如何期望键/值对仅存储在DB中的一个字段中(特别是name) ?

现在发生的事情是,你告诉蛋糕保存提供的数据($this->Category->save($this->data)),虽然你不检查(通过蛋糕的验证规则在模型或任何其他手段),它包含有用的参数,特别是Category.name

因为计算机只会做你告诉他们做的,而不是你暗示或想到的,它继续并将计算的created/modified字段发送到DB, DB反过来用自动递增的ID保存它们。由于name在DB中没有UNIQUE或NOT NULL字段条件,因此它被保存为NULL或空字符串。