剛又找到DM1.4.5一個不算是bug的錯誤,那就是save()函式無法儲存使用自訂的id,換句話說DM預定強制限定你的id(PK)欄位必需數字並且自動增值(auto_increment),所以沒辦法使用像是UUID來當做識別碼。
//建立User物件(create user ORM)
$u = new User();
//使用自訂ID(use custom id)
$u->id = uuid();
//無法運作(It' can't working)
$u->save();
@_@真是的,所以我又開始趴原始碼了,找到判斷什麼時候做update什麼時候做insert動作的那部分。
如何做修改呢?(how to fix?)
找到欲修改的行數(find it on line 436 in libraries/datamapper.php)
if (!empty($data['id']))
{
//略(ignore)
}
後來修改程式如下(Fix It!!)
if (!empty($this->db->get_where($this->table,array('id'=> $data['id']))->num_rows))
{
//略(ignore)
}
現在可以使用自訂的函式或原本的自動增值(It's working well with custom id or auto_increment mode)
//建立User物件(create user ORM)
$u = new User();
//使用自訂ID(use the custom id)
//若你使用自動增值,你可以略忽下一行
//(if you use auto_increment mode,you can pass follow line)
$u->id = uuid();
//成功運作(It' working well )
$u->save();
換句話說,改完之後並不影響原本的運作,也就是如果你喜歡自動增值的方式,那就照官方的作法做吧!
文章標籤
全站熱搜
