保存您的数据(实例讲述html5做网站)

CakePHP使储蓄模型数据提前。数据可以保存应该传递给模型的save()方法使用以下基本格式:

Array
(
    [ModelName] => Array
    (
        [fieldname1] => 'value'
        [fieldname2] => 'value'
    )
)

大多数时候你甚至不需要担心这种格式:CakePHP的FormHelper,模型在这种格式找到方法所有包数据。如果你使用的帮手,可用的数据也方便在$this->request->data 快速使用。
这里有一个快速的例子使用CakePHP模型的控制器动作数据保存在一个数据库表:

public function edit($id) {
    // Has any form data been POSTed?
    if ($this->request->is('post')) {
        // If the form data can be validated and saved...
        if ($this->Recipe->save($this->request->data)) {
            // Set a session flash message and redirect.
            $this->Session->setFlash('Recipe Saved!');
            return $this->redirect('/recipes');
        }
    }

    // If no form data, find the recipe to be edited
    // and hand it to the view.
    $this->set('recipe', $this->Recipe->findById($id));
}

保存时,数据传递给它的第一个参数是验证使用CakePHP的验证机制(有关更多信息,请参见数据验证章)。如果由于某种原因您的数据没有保存,一定要检查,看看一些验证规则被打破了。您可以通过输出模型调试这种情况::$ validationErrors:

if ($this->Recipe->save($this->request->data)) {
    // handle the success.
}
debug($this->Recipe->validationErrors);

还有其他一些save-related模型中,你会发现有用的方法:
Model::set($one, $two = null)
Model::set()可用于设置一个或多个字段的数据模型内部数据数组。这是有用的在使用ActiveRecord模型与功能提供的模型:

$this->Post->read(null, 1);
$this->Post->set('title', 'New title for the article');
$this->Post->save();

是如何使用的一个示例set()来更新单一领域,在一个ActiveRecord的方法。您还可以使用set()为新值分配给多个字段:

$this->Post->read(null, 1);
$this->Post->set(array(
    'title' => 'New title',
    'published' => false
));
$this->Post->save();

上面会更新标题和发布字段和记录保存到数据库中。
Model::clear()
该方法可用于重置模型状态和清除任何未保存的数据,验证错误。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值