2012-07-30 132 views
0

我是cakephp的新手初學者。我試圖根據HABTM關係進行刪除,但失敗了。請幫幫我。在cakephp中刪除HABTM的數據

我有三個表:products,usersusers_products表。

一個產品可以有很多用戶,一個用戶會有很多產品。 users_products表的結構是:id,user_id,product_id,renew_id

我想刪除所有提交的數據中users_productsproducts表時renew_id滿足一定的條件,但我不想觸及users表什麼。

我想寫一個while循環來刪除記錄,但害怕會導致許多查詢,而不是使用cakephp功能。

我該怎麼做?

回答

1

進行了許多和HABTM數據刪除,我們喜歡這種方法,當關系模型定義

//delete(int $id = null, boolean $cascade = true); 
    $this->Product->delete($id,true); 

級聯纔會工作。

0

與其他模型一樣,您可以從聯接中刪除行。

$this->UsersProduct->delete()$this->UsersProduct->deleteAll()

如果您正在使用HABTM這種關係可能無法使用,所以你可以定義的模型,比如用戶的hasMany UsersProduct和產品的hasMany UsersProduct的關係,這將允許從兩側的訪問。

您還可以使用ClassRegistry::init('UsersProduct')->deleteAll()

作爲一個側面說明,它應根據約定ProductsUser您的加盟模式是正確命名,即連接表是加盟模式的字母順序排列。按照慣例會給你一個表products_users