2012-07-30 2 views
0

저는 cakephp의 새로운 초보자입니다. HABTM 관계를 기반으로 삭제를 시도하지만 실패했습니다. 도와주세요.cakephp에서 HABTM에 대한 데이터 삭제

나는 세 테이블 : products, usersusers_products 테이블을 가지고 있습니다.

한 제품에는 많은 사용자가 있고 한 사용자에게는 많은 제품이 있습니다. users_products 테이블의 구조는 id, user_id, product_id, renew_id입니다.

나는 renew_id가 특정 조건을 충족 할 때 users_productsproducts 테이블의 모든 datas를 삭제하려면,하지만 난 users 테이블에 아무것도 만지지 싶지 않아요.

나는 기록을 삭제하기 위해 while 루프를 작성하려고하지만 두려운 것은 많은 쿼리를 발생시키고 cakephp 기능을 사용하지 않을 것이라고 생각합니다.

어떻게하면됩니까?

답변

1

를 들어 우리의 관계는 모델에 정의 될 때

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

캐스케이드는 작동이 방법을 선호하는 많은 및 HABTM 데이터 삭제를 가지고 있습니다.

0

다른 모델과 마찬가지로 조인에서 행을 삭제할 수 있습니다.

$this->UsersProduct->delete() 또는

$this->UsersProduct->deleteAll() 당신이 양쪽에서 액세스를 허용 할 것 같은 사용자 hasMany의 UsersProduct 및 제품 hasMany의 UsersProduct와 모델의 관계를 정의 할 수 있도록 관계는 사용하지 못할 수 있음을 HABTM를 사용하는 경우. 이 ProductsUser 규약을 기반으로해야합니다으로

또한 보조 노트로 ClassRegistry::init('UsersProduct')->deleteAll()

을 사용할 수 있습니다, 당신의 가입 모델이 잘못이라는, 즉 테이블 조인 모델의 알파벳 순서로 조인입니다. 규칙에 따라 products_users

이라는 테이블을 제공합니다.
관련 문제