Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Phalcon模型更新不工作_Php_Mysql_Phalcon - Fatal编程技术网

Php Phalcon模型更新不工作

Php Phalcon模型更新不工作,php,mysql,phalcon,Php,Mysql,Phalcon,这是我的模型: class Users extends Model { public $id; public $fname; public $lname; public $email; public $password; public $emailVerified; public $suspended; } 现在我要挂起一个用户 $user = Users::findFirst(

这是我的模型:

class Users extends Model
{
    public $id;
    public $fname;
    public $lname;
    public $email;
    public $password;
    public $emailVerified;
    public $suspended;
}
现在我要挂起一个用户

                $user = Users::findFirst(
                                    array(
                                        'conditions' => "email=:email:",
                                        'bind' => array(
                                            'email' => $context->request->getPost("email")
                                        ))
                                );
                $user->suspended = 1;
                $user->save();
现在问题来了,在我更新用户数据后,
suspended
字段按预期设置为
1
,但奇怪的是,
emailVerified
字段也被更新了。现在,两个字段都保存值:
1

我不知道这是怎么发生的。我搜索了互联网,但没有找到类似的问题。我做错什么了吗

更新:

这是mySQL日志。我发现了问题。Phalcon查询生成器为
emailVerified
创建的值包装在单引号中。所以它是一个字符串,字段类型是
bit


我看不出你上面的代码有任何错误导致你看到的问题。我建议您将数据库设置为转储所有SQL请求,并仔细检查数据库中的默认值和函数,这些默认值和函数可能会更改数据库中的值

我不久前也遇到过这个问题。Phalcon中似乎不支持
bit
列。您应该改用
tinyint


我还发现了一个“确认”语句。

查询中为
emailVerified
提供的值被包装在单引号中。我认为这就是问题所在,但我不知道如何解决它。您的用户模型中有beforeValidation或beforeSave方法吗?
111 Query   

UPDATE `users` SET `fname` = 'user_fname', `lname` = 'user_lname', `email` = 'user_email', `emailVerified` = '0', `suspended` = 1 WHERE `id` = '3'

111 Quit