Mysql 不使用Null保存模型值

Mysql 不使用Null保存模型值,mysql,phalcon,Mysql,Phalcon,每次我尝试更新一行时,我都会收到一个错误,上面写着“需要某些东西”。在codeigniter中,您可以更新行,而无需在mysql选项卡设置中将所有内容设置为null 我只想更新一个值,而不是整行 这可能吗 if ($users->save() == false) { echo "Umh, We can't update the user right now: \n"; foreach ($users->getMessages() as $message) {

每次我尝试更新一行时,我都会收到一个错误,上面写着“需要某些东西”。在codeigniter中,您可以更新行,而无需在mysql选项卡设置中将所有内容设置为null

我只想更新一个值,而不是整行

这可能吗

if ($users->save() == false) {
    echo "Umh, We can't update the user right now: \n";
    foreach ($users->getMessages() as $message) {
        echo $message, "<br>";
    }
    $this->flash->error("Error in updating information.");
    $this->response->redirect('user/profile');
        } else {
            echo "Great, a new robot was saved successfully!";
            $this->flash->success("Member has been updaed successfully.");
            //$this->response->redirect('user/profile');
        }
if($users->save()==false){
echo“嗯,我们现在无法更新用户:\n”;
foreach($users->getMessages()作为$message){
回显$message,“
”; } $this->flash->error(“更新信息时出错”); $this->response->redirect('user/profile'); }否则{ echo“太好了,一个新机器人成功获救!”; $this->flash->success(“成员已成功升级”); //$this->response->redirect('user/profile'); }
您所做的操作称为插入。在预先存在的行中将列设置为不同的值称为更新

后者是灵活的,前者不是

我强烈建议不要像对待
这样对待数据库,这就是我的感受


把所有的数据放进去。Null是您的敌人

您的isseue发生是因为您已经填写了表格,但尚未正确定义模型。Phalcon正在验证所有fo模型数据,然后再尝试保存它。如果您使用所有默认值、跳过等正确定义了模型,则将根据您的意愿在单列上触发更新

如果您有不允许空值的定义,但您仍然需要一个空值或默认值,那么您可能希望在模型实现中使用“beforeCreate”操作。另外,如果在第一次插入时设置了默认值,您可能希望使用
skipAttributes
方法

有关详细信息,请参阅文档:。到目前为止,我在互联网上找到了最好的一点

此外,下面是我的工作代码中的可空电子邮件列和非空默认值“0”的示例。“跳过”列:

public function initialize() {
    $this->skipAttributesOnCreate(['skipped']);
}

public function validation()
{
    if($this->email !== null) {
        $this->validate(
            new Email(
                array(
                    'field'    => 'email',
                    'required' => true,
                )
            )
        );
        if ($this->validationHasFailed() == true) {
            return false;
        }
    }
}

您确实希望出现“需要某些东西”的错误。您所缺少的只是模型上默认值的正确实现。一旦你习惯了这些机制,你会发现它们很容易处理,而且利大于弊。

所以每次我想更新数据库时,我都需要包含所有其他变量?没有办法只更新行的一个部分吗?不,你不需要在
更新
时更新。假设您有11列。你可以更新1,4。无论什么由于主键和约束等其他原因,更新可能会失败,但这是另一个问题