模型如何在Codeigniter中保存来自控制器的数据

时间:2018-07-24 09:10:45

标签: php codeigniter codeigniter-3 codeigniter-query-builder codeigniter-form-validation

我有一个Web应用程序,需要将消息发送给许多朋友。但是我遇到了错误。请帮助我。...

以下是我的控制器

public function message(){

$this->form_validation->set_rules('message','Message', 'required');
$this->form_validation->set_rules('friend_id[]','Recipients', 'required');
if($this->form_validation->run()){
     $data = $this->input->post("friend_id[]");
    unset($data['submit']);
    $this->load->model('Queries');
    $message=$this->Queries->saveMessage();
    if($message){
    echo "Success";
    }else{
    echo "error";
    }

     }
     else{ 
     echo validation_errors();
        }
     }

这是我的模特

 public function saveMessage($data){
     $i=0;
     foreach($data['friend_id'] as $friend_id){

          $record = array(
          'friend_id' => $friend_id,
          'message' => $data['message']
          );
          $this->db->insert('tbl_messages', $record);
          $i++;
             }
              return $data;
          }

当我运行它时..显示错误,并且数据库中没有插入数据

1 个答案:

答案 0 :(得分:1)

希望这对您有帮助:

您的控制器方法message()应该是这样的:

public function message()
{
    $this->form_validation->set_rules('message','Message', 'required');
    $this->form_validation->set_rules('friend_id[]','Recipients', 'required');
    if($this->form_validation->run())
    {
        $friend_ids = $this->input->post("friend_id[]");
        $message = $this->input->post("message");
        unset($data['submit']);
        $this->load->model('Queries');
        $insert = $this->Queries->saveMessage($friend_ids, $message);
        if($insert)
        {
            echo "Success";
        }
        else
        {
            echo "error";
        }
     }
     else
    { 
     echo validation_errors();
    }
}

您的模型方法saveMassage()应该是这样的:

public function saveMessage($friend_ids , $message)
{
    foreach($friend_ids as $friend_id)
    {
        $record = array('friend_id' => $friend_id,'message' => $message);
        $this->db->insert('tbl_messages', $record);
    }
    return true;
}