Ошибка модели и контроллера в проекте моего веб-сайта

#php #codeigniter #codeigniter-3 #crud

Вопрос:

Пожалуйста, помогите мне, я не могу получить доступ к своему коду, он всегда показывает ошибку:

Было обнаружено неперехваченное исключение Типа: ArgumentCountError

Сообщение: Слишком мало аргументов для функции Quotation_model::addModels(), передано 1 C:xampphtdocssangilapplicationcontrollersQuotation.php на линии 126 и ровно 2 ожидаемых

Имя файла: C:xampphtdocssangilapplicationmodelsQuotation_model.php

Номер строки: 122

Обратный путь:

Файл: C:xampphtdocssangilapplicationcontrollersQuotation.php Строка: 126 Функция: Добавить модели

Файл: C:xampphtdocssangilindex.php Строка: 315 Функция: require_once

Это и есть код:

Контроллер: Quotation.php

 public function addQuotation()
{

    $this->form_validation->set_rules('date', 'Date', 'trim|required');
    $this->form_validation->set_rules('reference_no', 'Reference No', 'trim|required');
    if ($this->form_validation->run() == false) {

        $this->add();
    } else {
        $warehouse_id = $this->input->post('warehouse', true);
        $data = array(
            "date"                =>  $this->input->post('date'),
            "reference_no"        =>  $this->input->post('reference_no'),
            "warehouse_id"        =>  $this->input->post('warehouse'),
            "customer_id"         =>  $this->input->post('customer'),
            "biller_id"           =>  $this->input->post('biller'),
            "total"               =>  $this->input->post('grand_total'),
            "discount_value"      =>  $this->input->post('total_discount'),
            "tax_value"           =>  $this->input->post('total_tax'),
            "note"                =>  $this->input->post('note'),
            "shipping_city_id"    =>  $this->input->post('city'),
            "shipping_state_id"   =>  $this->input->post('state'),
            "shipping_country_id" =>  $this->input->post('country'),
            "shipping_address"    =>  $this->input->post('address'),
            "shipping_charge"     =>  $this->input->post('shipping_charge'),
            "internal_note"       =>  $this->input->post('internal_note'),
            "mode_of_transport"   =>  $this->input->post('mode_of_transport'),
            "transporter_name"    =>  $this->input->post('transporter_name'),
            "transporter_code"    =>  $this->input->post('transporter_code'),
            "vehicle_regn_no"     =>  $this->input->post('vehicle_regn_no'),
            "user"                =>  $this->session->userdata('user_id')
        );

        if ($quotation_id = $this->quotation_model->addModel($data)) {
            $log_data = array(
                'user_id'  => $this->session->userdata('user_id'),
                'table_id' => $quotation_id,
                'message'  => 'Quotation Inserted'
            );
            $this->log_model->insert_log($log_data);
            $sales_item_data = $this->input->post('table_data', true);
            $js_data = json_decode($sales_item_data);
            foreach ($js_data as $key => $value) {
                if ($value == null) {
                } else {
                    $product_id = $value->product_id;
                    $quantity = $value->quantity;
                    $data = array(
                        "product_id" => $value->product_id,
                        "quantity" => $value->quantity,
                        "price" => $value->price,
                        "gross_total" => $value->total,
                        "discount_id" => $value->discount_id,
                        "discount_value" => $value->discount_value,
                        "discount" => $value->discount,
                        "tax_id" => $value->tax_id,
                        "tax_value" => $value->tax_value,
                        "tax" => $value->tax,
                        "quotation_id" => $quotation_id
                    );
                    //$this->sales_model->checkProductInWarehouse($product_id,$quantity,$warehouse_id);
                    if ($this->quotation_model->addQuotationItem($data, $product_id, $warehouse_id, $quantity)) {
                    } else {
                    }
                }
            }
            redirect('quotation/view/' . $quotation_id);
        } else {
            redirect('quotation', 'refresh');
        }
    }
}
 

Модель: Quotation_model.php

 public function addModel($data, $invoice)
{
    if ($this->db->insert('quotation', $data)) {
        return $this->db->insert_id();
    } else {
        return FALSE;
    }
}
 

Ответ №1:

вы создаете модель с 2 входными данными

$data и $invoice

 public function addModel($data, $invoice)
 

но при вызове модели вводите только 1 вход в контроллер

 $this->quotation_model->addModel($data)
 

удалите $invoice его в своей модели, если он вам не нужен, или добавьте еще один ввод, когда вы вызываете его из контроллера.

Ответ №2:

 public function addModel($data)
{
    if ($this->db->insert('quotation', $data)) {
        return $this->db->insert_id();
    } 
    return false;
}
 

Комментарии:

1. Хороший ответ всегда будет иметь хорошее объяснение. Пожалуйста, объясните свой ответ и дайте нам знать, почему и как работает ваше решение

Ответ №3:

Контроллер: Quotation.php

 $quotation_id = $this->quotation_model->addModel($data);
 

итак, в вашей модели: Quotation_model.php

 public function addModel($data)
{
    if ($this->db->insert('quotation', $data)) {
        return $this->db->insert_id();
    } else {
        return FALSE;
    }
}