我的问题与this和this略有不同。在我的模型类中,我必须将删除和保存分成两个不同的函数,如下所示。
#save advanced preferences
function savePreference($preferences){
$this->db->insert('bingo_advanced_preferences', $preferences);
echo $this->db->last_query();
}
#delete advanced preferences
function deletePreference($user_id,$criteria){
return $this->db->delete('bingo_advanced_preferences', array('bingo_user_id' => $user_id,'adv_criteria' =>$criteria));
}
如果我从控制器调用这些函数,就像这样删除,更新工作。
//language preferences
if($this->input->post('language') && count($this->input->post('language')) > 0):
$this->Bingo_advanced_preferences->deletePreference($user,'15');
for ($i=0; $i < count($this->input->post('language')); $i++) {
$language_options = array(
'bingo_user_id' => $user,
'adv_criteria' => 15, //languages
'adv_criteria_value' => $this->input->post('language')[$i],
'adv_date_created' => date('Y-m-d H:i:s')
);
$this->Bingo_advanced_preferences->savePreference($language_options);
}
endif;
然而,这并不适合某人取消选择所有内容的情况,所以正确的顺序应该是这样的。
$this->Bingo_advanced_preferences->deletePreference($user,'15');
if($this->input->post('language') && count($this->input->post('language')) > 0):
for ($i=0; $i < count($this->input->post('language')); $i++) {
$language_options = array(
'bingo_user_id' => $user,
'adv_criteria' => 15, //languages
'adv_criteria_value' => $this->input->post('language')[$i],
'adv_date_created' => date('Y-m-d H:i:s')
);
$this->Bingo_advanced_preferences->savePreference($language_options);
}
endif;
这只会删除adv_criteria = 15且永远不会更新的所有记录(执行后续保存)。当然我用if else语句解决了我的问题所以我的问题是为什么这不起作用?我们怎样才能做到这一点?
答案 0 :(得分:1)
对于删除,您可以在
等视图文件上执行此操作Enumerable.Range(0, 1000)
.GroupBy(i => i % 2)
.Select(p => p.Key == 1 ? p.Reverse() : p)
.OrderByDescending(p => p.Key)
.SelectMany(p => p);
然后在这样的控制器上
<input type='checkbox' name='tableId[]' value='<?php echo $value->tableId; ?>"'>
对于Insert,您可以在与上面相同的视图文件上执行此操作 然后在像这样的控制器上
function delete_multiple() {
// Retrive Multiple Id List From Form
$check_id = $this->input->post('tableId[]');
// Multiple Delete Loop For Id
foreach($check_id as $checkId) {
$this->db->where('tableId', $checkId);
$this->db->delete('TableName');
}
}