在这里你会发现: https://github.com/joostvanveen/build-a-cms-with-codeigniter 它有核心文件夹中的MY_Model,库中的Admin_Controller,我在新网站中使用的源代码。我喜欢它如何流动数据但我在上传图像和更新它时遇到了问题。图像上传顺利,但每当我编辑数据时,数据库中的图像名称就会消失。它会全部更新。我知道如何停止更新其他字段,但同样的方法不适用于图像。
这是数据的保存方式,用户模型(user_m)具有验证和新变量以及表的选择。函数'save'在MY_Model中定义。 user_m扩展MY_Model而不是默认CI_Model。以下代码插入&更新。它在保存功能中定义。如果提供了$ id,则完成更新,否则插入新项目。
// Insert
if ($id === NULL) {
!isset($data[$this->_primary_key]) || $data[$this->_primary_key] = NULL;
$this->db->set($data);
$this->db->insert($this->_table_name);
$id = $this->db->insert_id();
}
// Update
else {
$filter = $this->_primary_filter;
$id = $filter($id);
$this->db->set($data);
$this->db->where($this->_primary_key, $id);
$this->db->update($this->_table_name);
}
这就是用户控制器::
中的调用方式$this->user_m->save($data, $id);
这是$ data的定义方式:
$data = $this->user_m->array_from_post(array('name', 'email', 'password'));
array_from_post函数在MY_Model中定义为:
public function array_from_post($fields){
$data = array();
foreach ($fields as $field) {
$data[$field] = $this->input->post($field);
}
return $data;
}
我在tutsplus论坛上发现了这个:
if(isset($data['password'])){ $data['password'] = $this->user_m->$data['password']; }else{ unset($data['password']); }
此代码只是在未更新$ data ['password']时取消设置,并且可以更新其他字段而不更改数据库中的值。
我有什么方法可以为图像更新做同样的事情吗?如果需要,我可以提供更多源代码。
任何熟悉JoostVanVeen课程的人?数据流程就像他的课程一样。