剛又找到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();
換句話說,改完之後並不影響原本的運作,也就是如果你喜歡自動增值的方式,那就照官方的作法做吧!
全站熱搜
留言列表