Mysql 不使用Null保存模型值
每次我尝试更新一行时,我都会收到一个错误,上面写着“需要某些东西”。在codeigniter中,您可以更新行,而无需在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) {
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。无论什么由于主键和约束等其他原因,更新可能会失败,但这是另一个问题