每当我尝试尝试更新一行时,我都会收到一条错误,上面写着“需要的东西”。在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');
}
答案 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;。您所遗漏的只是模型上默认的正确实现。一旦你习惯了这些技巧,你应该发现它们易于处理,而且缺点比利弊更多。