2016-08-15 63 views
1

这是我的模型:尔康模型更新不工作

class Users extends Model 
{ 
    public $id; 
    public $fname; 
    public $lname; 
    public $email; 
    public $password; 
    public $emailVerified; 
    public $suspended; 
} 

,现在我要suspend用户...

   $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

enter image description here

111 Query 

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

111 Quit  
+0

您的用户模型中是否有beforeValidation或beforeSave方法? –

回答

1

我前段时间也遇到过这个问题。看来bit列在Phalcon中不受支持。您应该使用tinyint

我还发现一个closed issue'确认'这一点。

1

我看不出有什么毛病你上面的代码导致该问题的视宁度。我建议设置你的数据库来转储所有的SQL quires,并且仔细检查你的数据库是否有可能改变数据库内部值的默认值和函数。

+0

在查询中为“emailVerified”提供的值包含在单引号中。我认为这是问题,但我不知道如何解决它。 – Agha