如何更新Cakephp中的字段

时间:2013-06-26 09:36:16

标签: cakephp sql-update cakephp-2.0 cakephp-2.1

我是Cakephp的新手,所以我觉得实施数据库查询很困难..我想要的是我想要更新一个手机号码,其中电子邮件等于用户给出的号码。 这是我想要实现的查询

        "Update Users set  mobileNo = $mobileNo  where email = $email"

我这样做

      $mobileNo = $data['mobileNo'];
        $email = $data['$email'];


        $count = $this->User->find('count', array(
            'conditions' => array('User.email' => $email)));

        if($count>0){

            $email = $this->User->field(
                'email',
                array('User.mobileNo' => $mobileNo));
            echo $email;

            $this->User->saveField("mobileNo",$mobileNo);

1 个答案:

答案 0 :(得分:15)

CakePHP中的更新通常都是基于知道您要编辑的记录的主键。

正常/简单

更新单个字段的示例如下:

$this->User->id = $this->User->field('id', array('email' => $email));
if ($this->User->id) {
    $this->User->saveField('mobileNo', $mobileNo);
}

这将导致以下查询(省略一些计数):

SELECT id from users where email = "$email"
UPDATE users set mobileNo = "$mobileNo" where id = <id>

原子

但是,您可以使用updateAll执行与问题中显示的完全相同的查询:

$this->User->updateAll(
    array('mobileNo' => "'$MobileNo'"),
    array('email' => $email)
);

这将导致以下查询:

UPDATE users set mobileNo = "$mobileNo" where email = "$email"

如果你使用updateAll,请注意更新应该是sql片段 - 这意味着你需要引用字符串。