Вызов неопределенного метода CodeIgniter \ Database \ MySQLi \ Builder :: num_rows () - PullRequest
2 голосов
/ 06 августа 2020

Я пытаюсь создать генератор кода для своей таблицы

Вот моя модель:

public function buat_kode()   {

    $this->db->table('RIGHT(proses_cutting.kode_packing_list,6) as kode', FALSE);
    $this->builder()->orderBy('kode_packing_list','DESC');    
    $this->builder()->limit(1);    
      $query = $this->db->table('proses_cutting');      //cek dulu apakah ada sudah ada kode di tabel.    
      if ($query->num_rows() <> 0){      
       //jika kode ternyata sudah ada.      
        $data = $query->row();      
        $kode = intval($data->kode) + 1;    
      }
      else {      
       //jika kode belum ada      
        $kode = 1;    
      }

      $kodemax = str_pad($kode, 6, "0", STR_PAD_LEFT); // angka 4 menunjukkan jumlah digit angka 0
      $kodejadi = "PLIK059".$kodemax;    // hasilnya ODJ-9921-0001 dst.
      return $kodejadi;
    }

контроллер:

public function create()
{
    session();
    $data = [
        'main' => 'prosescutting/create',
        'validation' => \Config\Services::validation(),
        'title' => 'Form Tambah Proses Cutting',
        'kodeunik' => $this->pcuttingModel->buat_kode(),
        'kode_packing_list' => $kodePackingSekarang,
    ];
    return view('template/template', $data);
}

и моя таблица: Таблица

То, что я пытаюсь сделать, это создать генератор для kode_packing_list для каждого элемента nama_barang, поэтому, когда я ввожу другую Ренату Блузка автоматически заполнится PLIK059000007

Но когда я попытался запустить его, он показал мне следующие ошибки:

Ошибка вызова неопределенного метода CodeIgniter \ Database \ MySQLi \ Builder :: num_rows () APPPATH \ Models \ PcuttingModel. php в строке 33

, а в строке 33 -

if ($query->num_rows() <> 0){  

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

@ SukmaQintara Я думаю, ты так и поступишь. В конструкторе запросов Codeigniter 4 на самом деле не объявлен этот метод num_row, но мы используем countResultAll ()

Пример

      $query = $this->db->table('proses_cutting');      //cek dulu apakah ada sudah ada kode di tabel.    
      if ($query->countResultAll() <> 0){      
       //jika kode ternyata sudah ada.      
        $data = $query->row();      
        $kode = intval($data->kode) + 1;    
      }
      else {      
       //jika kode belum ada      
        $kode = 1;    
      }

Если он не работает, попробуйте мой другой ответ Мой последний ответ ИЛИ используйте справочный документ Проверьте этот документ

0 голосов
/ 06 августа 2020

Вы используете неправильные табличные функции базы данных, попробуйте следующее:

$db = \Config\Database::connect(); // optional; init database if not created yet

$builder = $db->table('proses_cutting');
$builder->select('RIGHT(proses_cutting.kode_packing_list,6) as kode');
$builder->orderBy('kode_packing_list','DESC');
$builder->limit(1);

if($builder->countAllResults() > 0) {
    $query = $builder->get();
    $result = $query->getResult(); // Result as objects eg; $result->kode
    $kode = $result->kode;
}

// Other option: I believe you can do this too

$builder = $db->table('proses_cutting');
$builder->select('RIGHT(proses_cutting.kode_packing_list,6) as kode');
$builder->orderBy('kode_packing_list','DESC');
$builder->limit(1);

$query = $builder->get();
$result = $query->getResult('array');
if(is_array($result) && count($array) > 0) {
    $kode = $result['kode'];
}

Дополнительные сведения о построителе см. В документации CI: https://codeigniter4.github.io/userguide/database/query_builder.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...