Phalcon Model更新无法正常工作

时间:2016-08-15 22:58:58

标签: php mysql phalcon

这是我的模特:

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    

2 个答案:

答案 0 :(得分:1)

我认为您的上述代码没有任何问题导致您看到的问题。我建议设置数据库以转储所有SQL quires,并仔细检查数据库中的默认值和函数,这些函数可能会更改数据库内部的值。

答案 1 :(得分:1)

我前一段时间也遇到过这个问题。 Phalcon似乎不支持import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; /** * Created by James Singleton on 8/15/2016. */ public class AuthPreferences { private static final String KEY_USER = "user"; private static final String KEY_TOKEN = "token"; private SharedPreferences preferences; public AuthPreferences(Context context) { preferences = context .getSharedPreferences("auth", Context.MODE_PRIVATE); } public void setUser(String user) { Editor editor = preferences.edit(); editor.putString(KEY_USER, user); editor.commit(); } public void setToken(String password) { Editor editor = preferences.edit(); editor.putString(KEY_TOKEN, password); editor.commit(); } public String getUser() { return preferences.getString(KEY_USER, null); } public String getToken() { return preferences.getString(KEY_TOKEN, null); } } 列。您应该使用bit代替。

我还找到了closed issue'确认'这个。