剛又找到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();

換句話說,改完之後並不影響原本的運作,也就是如果你喜歡自動增值的方式,那就照官方的作法做吧!

低溫烘培 發表在 痞客邦 PIXNET 留言(0) 人氣()