情況是這樣:
我需要先往Post 表中插入文章的基本資料,成功後返回 post_id。然後需要做一些資料處理,再用 post_id 和對應的資料插入到 Postmeta 表。 但時候在資料處理的過程中,有時候會失敗。導致 Post 的資料插入成功了,Postmeta 表的資料插入失敗。 這就是一次失敗的插入。會產生很多冗餘的 Post 資料。
我希望的是 postmeta 資料插入失敗,前面的 post 資料也應該『抹除』,就像事務的回退。
事務是在 CI 的 model 中運行,但是據我瞭解到,model 主要是用來資料的增刪改查。資料處理(邏輯處理)主要都在 controller中進行。
所以我不知道,我這個情況,到底應該如何處理?
謝謝大家。
回複內容:
情況是這樣:
我需要先往Post 表中插入文章的基本資料,成功後返回 post_id。然後需要做一些資料處理,再用 post_id 和對應的資料插入到 Postmeta 表。 但時候在資料處理的過程中,有時候會失敗。導致 Post 的資料插入成功了,Postmeta 表的資料插入失敗。 這就是一次失敗的插入。會產生很多冗餘的 Post 資料。
我希望的是 postmeta 資料插入失敗,前面的 post 資料也應該『抹除』,就像事務的回退。
事務是在 CI 的 model 中運行,但是據我瞭解到,model 主要是用來資料的增刪改查。資料處理(邏輯處理)主要都在 controller中進行。
所以我不知道,我這個情況,到底應該如何處理?
謝謝大家。
public function postWithOther()
Controller 才不需要關心裏面是否有事務。
按我的理解,model實際上應該是一個商務邏輯層,你說的這個情境,完全可以在model中寫一個方法(同時包括事務的處理)。
關於CI事務的使用參考文檔:http://codeigniter.org.cn/user_guide/database/transactions.html