我有这样的模特
function getlastval($prefix,$namatable, $namafield)
{
$this->db->order_by($namafield,'DESC');
$key = $this->db->get($namatable);
if($key->num_rows()>0)
{
$lastval= $key->row()->Kode_Material_Jasa;
$lastval = explode($prefix,$lastval);
$lv = $lastval[1]; //line 18 refer to this line
//return ltrim($lv, '0');
}
else
{
return 0;
}
}
function gencode($prefix, $digit, $lastval)
{
return $prefix . str_pad($lastval+1, $digit, '0', STR_PAD_LEFT);
}
它适用于早期的控制器
function addkategorimaterial()
{
$this->load->model('m_admin');
$lastval = $this->m_admin->getlastval('KKMJ','ms_kategori_material','Kode_Kategori_Material_Jasa');
$data['nextval'] = $this->m_admin->gencode('KKMJ',3,$lastval);
$data['title'] = 'QB Tambah Kategori Material';
$this->load->view('head',$data);
$this->load->view('content/add_kategori_material');
}
它返回KKMJ001
但是它不能在另一个控制器上工作
$this->load->model('m_admin');
$lastval = $this->m_admin->getlastval('KMJ','ms_material_jasa','Kode_Material_Jasa');
$data['nextval'] = $this->m_admin->gencode('KMJ',3,$lastval);
$data['kkmj']='';
$data['title'] = 'QB Tambah Material / Jasa';
print_r($data['nextval']);
print_r($lastval);
所以函数会返回KMJ001
,错误就像这样
我该如何解决这个问题?
答案 0 :(得分:0)
我不认为explode()
是你所追求的功能。 explode()
函数通过分隔符将字符串拆分为数组。
它没有'前缀',因为它是你选择的第一个参数(语义上)。它将分隔符作为第一个参数。
由于您将KMMJ
作为分隔符传递,因此从$key->row()->Kode_Material_Jasa;
返回的字符串类似于:{{1这会产生:fooKMMJbar
......这是非常不可能的。
无论如何,你打电话给array('foo', 'bar')
和getlastval('KMJ'...)
,你确定它们应该不一样吗?