我正试图为我的表制作一个代码生成器
这是我的型号:
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' => ConfigServices::validation(),
'title' => 'Form Tambah Proses Cutting',
'kodeunik' => $this->pcuttingModel->buat_kode(),
'kode_packing_list' => $kodePackingSekarang,
];
return view('template/template', $data);
}
和我的表:表
我想做的是为nama_barang的每个项目制作一个kode_packing_list的生成器,这样当我输入另一个Renata Blouse时,它将自动填充PLIK059000007
但当我尝试运行它时,它向我显示了以下错误:
错误调用未定义的方法CodeIgniter\Database\MySQLi\Builder::num_rows((第33行的APPPATH\Models\PcuttingModel.php
并且第33行是
if ($query->num_rows() <> 0){
您使用了错误的数据库表函数,请尝试以下操作:
$db = ConfigDatabase::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
@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;
}
如果不起作用,请尝试我的另一个答案我的最后一个答案或使用参考文件检查此文件