我有一个现有的表单,该表单将输入数据以数组格式传递给模型。 $ postdata具有视图中的所有数据并将其发送到模型。
控制器:
$inquiry_id = $this->input->post('inquiry_id');
$postdata = $this->input->post();
$this->load->model('Design_model');
$this->Design_model->insertdata($postdata,$inquiry_id);
型号:
function insertdata($data = array(), $inquiry_id){
$sql = $this->db->query("select * from design where inquiry_id='".$inquiry_id."'");
if($sql->num_rows() == 0){
$sql_query = $this->db->insert('design', $data);
}
else{
$this->db->where('inquiry_id', $inquiry_id);
$this->db->update('design', $data);
}
}
上述工作正常。现在,我想在视图中添加一些字段并保存在其他数据库表中。需要从要保存的$ postdata数组中排除新的字段值。需要找到最佳方法来做到这一点。我可以从所有新字段的名称开始,以便我们可以添加任何过滤器(如果有)以排除在$ postdata中。
答案 0 :(得分:0)
您可以使用Array helper中的elements()函数。
$array = array(
'id' => 101,
'title' => 'example',
'desc' => 'something',
'unwanted' => 'bla bla'
);
$filtered_array = elements(array('id','title','desc'),$array); //you can use this directly to the post data
$this->Design_model->insertdata($filtered_array,$inquiry_id);
您可以使用array_merge()或array_push()函数将新字段添加到数组。
答案 1 :(得分:0)
假设您有以下数据
$postdata = array("name"=>"xyz",
"email"=>"xyz@gmail.com",
"age"=>"40",
"gender"=>"Male",
"occupation"=>"Engineer"
);
正如您所说,前3条记录来自旧字段,后2条来自新字段。 您需要找到第一个集合的最后一个索引,即“ 3”。现在您可以执行此操作。
$firstDb = array_splice($postdata,0,3); //here 3 is index we are using to get first 3 records from $postdata
$secondDb = array_slice($postdata,0,3); //here 3 is index we are using to get records from position 3 from $postdata
输出:
$firstDb = array("name"=>"xyz","email"=>"xyz@gmail.com","age"=>"40");
$secondDb = array("gender"=>"Male","occupation"=>"Engineer");
现在,您可以根据需要插入记录。编码愉快