CakePHP的默認設置爲true,我只是爲了確保它而編碼。 所以我有以下數據庫結構: 項目HABTM行動,唯一設置爲true。CakePHP - HABTM記錄將不會被刪除,唯一設置爲true
的情況如下:
刪除工作正常,在保存時,我刪除1條或多個記錄,如果ATLEAST 1紀錄停留「活」
刪除不工作時節省當我刪除所有記錄(或1記錄,如果這是唯一的記錄)。它只是保留所有現有的記錄。
我已確認與調試($這個 - >請求 - >數據)右保存在此之前,它包含了行動沒有。
CakePHP的默認設置爲true,我只是爲了確保它而編碼。 所以我有以下數據庫結構: 項目HABTM行動,唯一設置爲true。CakePHP - HABTM記錄將不會被刪除,唯一設置爲true
的情況如下:
刪除工作正常,在保存時,我刪除1條或多個記錄,如果ATLEAST 1紀錄停留「活」
刪除不工作時節省當我刪除所有記錄(或1記錄,如果這是唯一的記錄)。它只是保留所有現有的記錄。
我已確認與調試($這個 - >請求 - >數據)右保存在此之前,它包含了行動沒有。
從你的文章的評論的討論我仍然困惑,但我知道那是什麼你想: 保存在類似這樣的格式的POST: 陣列( 「項目」 =>陣列( 'ID'=> '3' ) 隨着:
$this->Item->SaveAll($this->request->data);
你的POST應包含 '操作' 鍵:
array(
'Item' => array(
'id' => '3'
),
'Action' => array(
'Action' => array()
)
第
當e「操作」鍵被設置,Cake知道它必須「超越」關係和它的魔法。 然後它會刪除。
我只是測試這對我正在開發一個應用程序,實際上發現這是一個錯誤。 :D問題 是對於特定的HATBM關係,我不得不使用手動生成的表單,因此發佈時沒有包含關係鍵沒有設置和記錄,沒有被刪除。我想表格助手會處理這個問題。
如果你有類似的問題,你可以用兩種不同的方式管理這個:
將一個隱藏的輸入用JavaScript
在控制器檢查,如果「操作」鍵設置,如果不將其添加(作爲空數組):
$這 - >請求 - >數據[ '動作'] [ '動作'] =陣列();
這可能是一種侵入性,但它會做的工作。
謝謝!這工作。我已經添加了'if(empty($ this-> request-> data ['modelname']))'check到我的控制器,並且在保存之前添加了一個空數組。我正在使用HTML表單助手順便說一句。 – pbond
因此,如果您使用的表單助手比這可能是一個錯誤或impovemnt,你應該考慮報告它:http://cakephp.lighthouseapp.com/ –
你有相反的關聯關係:行動HABTM項目?你從哪裏刪除?你嘗試通過一個保存操作(Action中沒有任何內容)或Model :: delete(),Model :: deleteAll()來刪除? –
是的,在這兩個模型中,我聲明HABTM關係的'unique'設置爲true。我的確嘗試通過保存操作進行刪除,在Action的帖子中沒有任何內容。所以我不理解它,在Action的帖子裏沒有任何內容,它保留了它不應該記錄的記錄。 – pbond
我的建議是溝通HABTM關係,並與'有很多通過'關係。 – Wylie