保存模型值无空

时间:2015-06-21 15:41:14

标签: 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) {
        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');
        }

2 个答案:

答案 0 :(得分:0)

您正在做的事情被称为插入。要将列设置为预先存在的行中的其他值,称为更新。

后者是灵活的,前者不是。

我强烈建议不要处理像this is what i feel like

这样的数据库

将所有数据放入.Null是你的敌人

答案 1 :(得分:0)

你的意外发生是因为你已经填充了表并且还没有正确定义模型。 Phalcon在尝试保存之前验证所有模型数据。如果您正确定义了所有默认值,跳过等模型,则可以根据需要对单个列进行更新。

如果您有定义,但不允许使用空值,但无论如何您需要空值或默认值,您可能需要使用&#39; beforeCreate&#39;模型实现中的动作。此外,如果在第一次插入时设置了默认设置,您可能想要使用skipAttributes方法。

更多信息请参见文档:Working with Models。到目前为止,我发现了最好的互联网。

此外,下面是可以为空的电子邮件列的示例,NOT NULL DEFAULT '0'&#39;跳过&#39;我的工作代码中的列:

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;
        }
    }
}

你确实需要错误&#34;需要一些东西&#34;。您所遗漏的只是模型上默认的正确实现。一旦你习惯了这些技巧,你应该发现它们易于处理,而且缺点比利弊更多。